在Opera中,从iframe调用父窗口的方法失败

时间:2012-03-06 17:10:40

标签: javascript opera cross-domain-policy

在我的一个页面中,我有一个iframe,它从一个不同于主页面的子域加载。 在这两个文档中,我将 document.domain 设置为相同,然后我尝试从父页面上的iframe调用方法,如:

window.parent.page.doit()

这在大多数浏览器(IE,firefox,chrome,safari)中运行良好,但在opera中失败,并显示以下错误消息:

  

未捕获的异常:ReferenceError:安全错误:尝试读取   受保护的变量:第

从我设法找到的内容来看,Opera似乎比其他浏览器更安全。有人遇到过这个问题吗?任何想法如何解决它或任何变通方法?

感谢。

2 个答案:

答案 0 :(得分:0)

您必须在两个页面上将document.domain设置为二级域名,即

<强> maindomain.com

document.domain = "maindomain.com";

<强> subdomain.maindomain.com

document.domain = "maindomain.com";

答案 1 :(得分:0)

我已经看到Opera的某些版本(我认为大约11.60?)会缓存页面的安全信息或类似的东西,导致安全错误只有在清除缓存并重新启动后才会消失。它很难调试,但至少你的访问者通常不会遇到这个问题..