Window to Window Communication in js by window name 使用窗口名称在js中进行窗口之间的通信
问题的出现原因是在两个窗口之间进行通信时,调用方法会出错,错误信息为DOMException: Blocked a frame with origin from accessing a cross-origin frame.
,并且设置Access-Control-Allow-Origin
也不能解决问题。
解决方法是使用opener.postMessage()
方法进行通信。
以下是详细的解决方法:
假设有以下内容:
windowHandle=window.open('path/to/document');
可以在两个窗口之间进行交互。
可以通过在打开新窗口的文档中使用变量名来获得指向打开它的窗口的窗口对象:
//在新窗口中的文档内使用doSomething windowHandle.doSomething();
还可以通过在新窗口中的文档到打开新窗口的窗口之间使用opener
属性来实现:
//在打开新窗口的窗口中使用doSomething opener.doSomething();
然而,这种方法会导致错误DOMException: Blocked a frame with origin from accessing a cross-origin frame.
,并且设置Access-Control-Allow-Origin
也无法解决问题。那么如何在两个窗口之间进行通信呢?
答案是使用opener.postMessage()
方法,这个方法可以在两个窗口之间发送消息。
具体的解决方法可以在stackoverflow.com/questions/24603580/…找到。