postMessage("hello there!", "http://example.com"); window.postMessage()方法没有返回值。 message 事件 当前窗口收到其他窗口发送的消息时,会发生 message 事件。通过监听该事件,可以接收对方发送的消息。 window.addEventListener( "message", (event) => { if (event.origin !== "http://example....
// getting the window from an iframelettargetWindow=iframe.contentWindow;targetWindow.postMessage('Hello World!','http://example.com');接收消息 在 postMessage() 执行成功后,会在目标窗口触发一个 MessageEvent 事件。我们需要一个事件监听器来得到它。在监听器回调函数内部,可以传递这个事件对象进去,它...
if (event.origin === 'https://example.com') { 代码语言:txt 复制 console.log('Received message: ' + event.data); 代码语言:txt 复制 } }); 代码语言:txt 复制 跨域使用window.postMessage的优势在于它提供了一种安全的跨域通信方式,可以在不同域之间传递数据和消息。它适用于以下场景: ...
window.addEventListener("message", receiveMessage,false);functionreceiveMessage(event) {if(event.origin !== "http://example.org:8080") {return; }//...} event 的属性有: data 从其他 window 中传递过来的对象。 origin 调用postMessage 时消息发送方窗口的 origin。 source 对发送消息的窗口对象的引用;...
exportinterfaceIIsErrorMessage{(message:any):boolean;} Example: functionisErrorMessage(message:any){return!(200<=message.status&&message.status<300);}constwindowPostMessageProxy=newWindowPostMessageProxy({isErrorMessage}); Logging messages By default, messages are not logged, but you can override this...
使用window.postMessage进行跨窗口通信的步骤如下: 在发送消息的窗口中,使用window.postMessage方法发送消息。例如: 代码语言:txt 复制 window.postMessage('Hello', 'https://example.com'); 在接收消息的窗口中,监听message事件,并在事件处理程序中获取消息内容。例如: 代码语言:txt 复制 window.addEventListener('...
比如,www1.example.com页面上面的脚本,只能与该域名(相同协议、相同端口)进行通信,如果与www2.example.com通信,浏览器就会报错(不过可以设置两者的document.domain为相同的值)。这是为了防止恶意脚本将用户信息发往第三方网站。 window.postMessage方法就是用来在某种程度上,绕过同域限制,实现不同域名的窗口(包括...
window.postMessage()方法可以安全地实现跨源通信。 一般情况下,两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https)、端口号(443为https的默认值),以及主机 (两个页面的模数Document.domain设置为相同的值) 时,这两个脚本才能相互通信。window.postMessage()方法提供了一种受控机制来规避此限...
otherWindow.postMessage(message, targetOrigin, [transfer]); 1. otherWindow 其他窗口的一个引用,比如 iframe 的 contentWindow 属性、执行 window.open 返回的窗口对象、或者是命名过或数值索引的 window.frames。 message 将要发送到其他 window的数据。它将会被结构化克隆算法序列化。这意味着你可以不受什么限制的...
exportinterfaceIIsErrorMessage{(message:any):boolean;} Example: functionisErrorMessage(message:any){return!(200<=message.status&&message.status<300);}constwindowPostMessageProxy=newWindowPostMessageProxy({isErrorMessage}); Logging messages By default, messages are not logged, but you can override this...