IE下Iframe的 document.domain的怪异问题

      在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>
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值