嗨,我对这条消息有一个问题。
我主页上的url是:
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如果我从page3尝试:
window.opener.document.getElementById("somethingPage1")我得到了同样的错误:
blocked a frame with origin from accessing a cross-origin frame为什么我可以与iframe交互,而不能与window.open和window.opener交互?
发布于 2018-11-01 22:48:11
在我的例子中,域名是不同的,我通过用父域名替换客户的域名来解决这个问题。如果域名在子窗口(弹出窗口)中无关紧要,您可以尝试。您试图访问的window.opener.document.getElementById()将不起作用。它会在你发布的时候引发安全错误。最好的方法是使两个网址在同一域名下,如果可能的话。或者只是为了开发,你可以在Chrome中安装扩展"Allow-Control-Allow-Origin:“它可以工作。
https://stackoverflow.com/questions/28348587
复制相似问题