同域下iframe操作时,js访问document出现"拒绝访问"的问题原因

1 篇文章 0 订阅
1 篇文章 0 订阅

在同一个域下,有页面A.html和B.html, A.html页面中包含一个iframe,其src属性指向B.html。

问题:     A.html页面中的javascript脚本可以获取到iframe所加载的网页的window对象,但访问window.document时会报"拒绝访问"脚本错误,过一会后访问document,又能正常显示和操作.

已排除原因:
1、两个页面是属于同一站点下的资源文件,不存在跨域访问的情况,且两个页面是同域的,即document.domain属性一致.
2、A.html页面中的iframe不论是动态创建还是固定生成在网页中都没有影响到错误的出现,而唯一不同的是检测iframe的加载状态时,动态创建的时候其状态顺序为uninitialized->loading->loaded->interactive->complete,而固定生成的时候其状态顺序为complete->loading->loaded->interactive->complete.

分析:
在iframe加载状态为completed之后能够正常的访问并修改其src指向的文档对象了,说明iframe加载完毕到父页面加载完毕这个过程仍然也是不能够访问iframe所引入的document文档对象,或者说,父 页面呈现的时候iframe都未必完全加载完毕,因此才会出现拒绝访问的错误提示 .

修改脚本意见:
假设A.html页面中的iframe的id命名为ifr,则需要调整的代码只有一处
if(document.readyState == "complete" && ifr.readyState == "complete"){
    //在此处访问并操作iframe所引入的document文档对象
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值