嗨,我对此消息有疑问。
我MAIN页面的网址是:
page1.mydomain.com/page1.html
此页面有一个Iframe:
frame.mydomain.com/iframe.html
从主页面我打开另一个页面的窗口:
mywindow = window.open("http://page1.mydomain.com/page3.html", 'page3', 'status=1,height=768,width=1280,scrollbars=1');
所有3个页面都设置了javascript:
document.domain = "mydomain.com";
我可以毫无问题地从主页面与iframe进行交互。 我只有访问window.open属性的问题。
像:
mywindow.document.getElementById("something")
我收到了错误消息。
blocked a frame with origin from accessing a cross-origin frame
如果我从第3页开始尝试:
window.opener.document.getElementById("somethingPage1")
我得到了同样的错误:
blocked a frame with origin from accessing a cross-origin frame
为什么我可以与iframe交互,无法与window.open和window.opener进行交互?
答案 0 :(得分:0)
在我的情况下,域名是不同的,我通过用父母的域名替换了客户的域名来解决了。您可以尝试在子窗口(弹出窗口)中确定域名是否重要。 您尝试访问的window.opener.document.getElementById()无法正常工作。 发布时会引发安全错误。最好的方法是将两个URL都设置为相同的域名。或者只是为了开发您可以安装扩展 在Chrome中执行“ Allow-Control-Allow-Origin:”。