嗨,我对这条消息有问题。
我主页的网址是:
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进行交互。我只在访问窗口时遇到问题。打开属性。
类似:
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交互?
在我的案例中,域名不同,我通过用父域名替换客户端的域名来解决这个问题。如果域名在子窗口(弹出窗口)中不重要,您可以尝试。您试图访问的window.oopener.document.getElementById()无法工作。当你发帖时,它会引发安全错误。如果可能的话,最好的方法是将两个URL都放在同一个域名下。或者只是为了开发你可以安装扩展"允许控制允许来源:"在Chrome中它将工作。