postMessage()方法
window.postMessage()方法安全地启用Window对象之间的跨源通信;例如,在页面和它产生的弹出窗口之间,或者在页面和嵌入其中的iframe之间。
通常,当且仅当它们源自的页面共享相同的协议、端口号和主机(也称为“同源策略”)时,允许不同页面上的脚本相互访问。window.postMessage()提供一种受控制的机制来安全地规避这种限制(如果使用得当)。
从广义上讲,一个窗口可以获得对另一个窗口的引用(例如,可以使用targetWindow=window.opener),然后使用targetWindow.postMessage() 在其上发送一个MessageEvent。然后,接收窗口可根据需要自由处理此事件。传递给window.postMessage()的参数(即“message”)通过事件对象暴露给接收窗口。
postMessage()方法语法如下:
targetWindow .postMessage(message,targetOrigin,[ transfer ]);
targetWindow
对将接收消息的窗口的引用。获得此类引用的方法包括:
- Window.open (生成一个新窗口然后引用它)。
- Window.opener (引用产生这个的窗口)。
- HTMLIFrameElement.contentWindow(从其父窗口引用嵌入式)。
- Window.parent&#x