在ie下如果两个
子站点的iframe页面之间需要交互,就必须在两个页面中都配置document.domain属性,比如页面A是http://xxx.aaa.com/a.html
,页面B是http://yyy.aaa.com/b.html
这时候两个页面中都写上document.domain=”aaa.com”,这样两个页面就可以交互了。
上面的情况只适用于嵌入的页面是事先已经已<iframe
src=”xxxxx”></iframe>的形式在页面中写好了,如果要在页面中动态创建一个iframe标签,上面的方法就不适用
了,这个问题经常会出现在富文本编辑器的代码中。最近这个问题可是困扰了我很长时间,今天总算解决了,其实问题就出在document.domain生效
的时机,做法就是在被调用的iframe页面中设置一个脚本变量,然后在父页面中不停地去尝试获取这个值,什么时候获得到了,就停下来执行自己的业务逻
辑。事先声明一下这个做法是参考了国外的一篇博客文章。
场景如下:
要在页面A(http://xxx.aaa.com/a.html
)中动态创建一个
iframe,iframe的src指向页面B(http://yyy.aaa.com/b.html
),
然后在页面A中获取或更改页面B中的内容。
代码如下:
页面A:
<html>
<head>
<title>http://xxx.aaa.com/a.html</title>
</head>
<body>
<script type="text/javascript">
document.domain = 'aaa.com';
var iframe = document.createElement("iframe");
iframe.src = 'http://yyy.aaa.com/b.html';
document.body.appendChild(iframe);
var timer = setInterval(function(){
if(iframe.contentWindow.canAccess){
clearInterval(timer);
//iframe.contentWindow.document.body.innerHTML = '这是新设置的页面内容';
alert('iframe的页面内容是:' + iframe.contentWindow.document.body.innerHTML);
}
}, 100);
</script>
</body>
</html>
页面B:
<html>
<head>
<title>http://yyy.aaa.com/b.html</title>
<script type="text/javascript">
document.domain = 'aaa.com';
var canAccess = true;
</script>
</head>
<body>
这是页面的原始内容
</body>
</html>
分享到:
相关推荐
本文实例讲述了PHP ajax跨子域的解决方案之document.domain+iframe。分享给大家供大家参考,具体如下: 对于主域相同,子域不同,我们可以设置相同的document.domain来欺骗浏览器,达到跨子域的效果。 例如:我们有...
iframe.name = 'ifr'; //iframe.setAttribute('name', 'ifr'); //这样也不行 上面两种方式都无法设置。后来找到原来也可以这样创建 JavaScript代码 var iframe = document.createElement(‘<iframe name
iframe.document出现拒绝访问。 threw an exception of type 'System.UnauthorizedAccessException' dynamic {System.UnauthorizedAccessException}
滚动的iframe页面.rar滚动的iframe页面.rar滚动的iframe页面.rar滚动的iframe页面.rar滚动的iframe页面.rar滚动的iframe页面.rar
ajax iframe上传.rar
iframe拖动........................................
IE方法:document.frames[‘myFrame’].document.getElementById(‘test’).value; 火狐方法:document.getElementById(‘myFrame’).contentWindow.document.getElementById(‘test’).value; IE、火狐方法: 代码...
iframe高度自适应,多浏览器兼容 已测试过在ie6,7,8,firefox8,chrom15中通过
后台管理框架(iframe).zip
iframe.style.backgroundColor="black"; img.id = "LoadingImg"; img.style.width="219px"; img.style.height="66px"; img.style.marginTop="-33px"; img.style.marginLeft="-109.5px"; img.style.padding=...
2D WebView for WebGL Web Browser IFrame 4.2.unitypackage.zip
设置iframe的document.designMode后仅Firefox中其body[removed]为br</title> <meta charset=”utf-8″> </head> <body> <iframe frameborder=”1″ style=”height: 330px;”></...
后台管理模板,前后端分离 演示地址:https://demo.easyweb.vip/iframe/
2D WebView for WebGL Web Browser IFrame4.1.unitypackage
vue多入口模式,iframe嵌套,自己写的一个小demo。注:里边有两个文件夹,详看带有vue3.0文件夹的文件。另外一个是我做参考用自行忽略
在父页面获取iframe子页面的元素 代码如下: 代码如下: $(“#objid”, document.iframes(‘iframe’).document) 或 代码如下: $(document.getElementById(‘iframeId’).contentWindow.document.body).html() $...
飞天素材网后台管理框架模板 v2.5 iframe版.rar
今天发现某网站上,IE9和chrome中页面的功能居然有差异,于是在IE9下打开console,发现一堆js报错,用fiddler跟踪了一下,原来代码里有一句是这样的: if(ie){ var iframe = document.createElement('<iframe ...