当脚本尝试访问IE8中的iframe时,“访问被拒绝”

时间:2010-02-16 21:11:30

标签: javascript iframe

我在我的网站上“懒加载”第三方广告脚本,通过覆盖document.write函数并在以后恢复它。此广告脚本会创建一个iframe,并尝试向其写入。

当脚本尝试访问frame.document时,我在 Internet Explorer 8 (但不是在FF,Safari或Chrome中)看到“访问被拒绝”错误。框架存在(我可以在IE8开发者工具中看到它)

知道为什么会这样吗?可能是因为iframe没有准备好,或者是因为跨站点安全限制(我还不完全理解)?

2 个答案:

答案 0 :(得分:1)

只是在黑暗中拍摄而没有看到您的代码,但请检查您是否在页面上明确设置了document.domain。如果您正在设置文档的域,尝试访问动态注入的iFrame可能会在IE中引发访问错误。例如,如果设置了以下内容,请尝试将其评论为仅测试:

//document.domain = "mydomain.com";

答案 1 :(得分:0)

这取决于您尝试访问frame.document的上下文。

例如,假设您在foo.com上加载页面。它反过来会在名为“myFrame”的框架中加载ad.com上运行的广告。

如果在foo.com上的脚本块中,您尝试访问myFrame.document,则会收到投诉,因为这些页面不在同一个域中。您可以从iframe内部引用该文档,但不能在外部引用该文档。

这是跨网站安全的基础知识。如果您可以向我们提供有关实际导致问题的代码段的更多信息,以及各个部分正在运行的域,我们可能会提供更多帮助。