此办法能够用于实现跨源通信等,咱们来演示如何实现在两个窗口之间进行通信。

假如咱们当初有两个页面:page1.html和page2.html, 他们的关系是通过iframe关联起来的,就像这样(上面是page1.html的内容):

<iframe id="receiver" src="./page2.html" width="300" height="100"></iframe>

为了实现通信,首先你须要在page2.html中注册事件监听:

window.addEventListener('message', function (e) {    console.log(e);});

确保page2.html中事件监听注册好了当前,在page1.html中首先须要获取page2.html的窗口对象:

var targetWindow = document.getElementById('receiver').contentWindow;

而后,间接应用其中的postMessage即可发送:

targetWindow.postMessage("你好呀!", "*");

在理论应用中,两个页面不肯定须要通过iframe关联,比方应用window.location.href等也是能够的,不过有一个根本的准则要留神:发送信息的时候,肯定要确保接管方曾经实现了信息接管事件的注册。