注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

百鬼夜行

身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。

 
 
 

日志

 
 

创建的iframe的document.domain问题解释  

2012-05-16 14:32:46|  分类: js原理及提醒记忆 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
如果项目中所有页面(包括iframe)都加了document.domain。动态创建的iframe仍会有拒绝访问的跨域问题(已经以标签形式写在页面上的iframe不会有此问题)。解决方案是:

动态创建的iframe的src的页面里也加上document.domain. 同时加一个全局变量。在调用这个iframe的父页面里,setTimeout定时获取这个全局变量,直到能获取到时就说明这个动态创建的iframe的document.domain刚刚开始生效。然后在此定时器内之后做事情就不会有跨域问题。(原因是动态创建的iframe需要一定的时间加载渲染,如果在此时间区间执行的脚本调用了该iframe的内容,浏览器会认为该iframe的document.domain仍沿用其父页面的,因其内部页面写的document.domain仍未生效。)

但此方式会对designMode="on"的可编辑iframe的内置功能有影响。

如从前端不能跨域读取其他页面的内容时,必须要用后端程序抓取到需要调用的页面。


网上有用iframe.src="javascript:void((function(){document.open();document.domain='***.com.cn';document.close()})())"
的方式,但是在IE下仍有拒绝访问的问题。估计是IE下动态创建iframe的时间更长吧。至少用定时器的方式目前我没有发现拒绝访问的问题。
  评论这张
 
阅读(1236)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018