Window to Window Communication in js by window name 使用窗口名称在js中进行窗口之间的通信

8 浏览
0 Comments

Window to Window Communication in js by window name 使用窗口名称在js中进行窗口之间的通信

有没有人能够给我一些关于如何使用JavaScript处理窗口之间的通信的思路,考虑到这两个窗口之间没有父子关系。基本上另一个窗口是通过window.open方法打开的。非常感谢任何有用的信息。

0
0 Comments

问题的出现原因是在两个窗口之间进行通信时,调用方法会出错,错误信息为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/…找到。

0