window.postMessage()实现跨域通信和页面间数据通信

简介: window.postMessage()实现跨域通信和页面间数据通信

window.postMessage() 方法可以安全地实现跨域通信和页面间数据通信。

postMessage 可用于解决以下方面的问题:

页面和其打开的新窗口的数据传递

页面与嵌套的 iframe 消息传递

多窗口之间消息传递

接口参数

otherWindow.postMessage(message, targetOrigin, [transfer]);

targetOrigin:

  • 同源的话:"/"
  • 无限制:“*”

不同页面间通讯

A.html

// 发送消息
var child = window.open("B.html");
setTimeout(function () {
    child.postMessage("你好", "*");
}, 3000);
// 接收消息
window.addEventListener("message", receiveMessage);
function receiveMessage(event) {
    console.log(event.data);
}

B.html

// 接收消息
window.addEventListener("message", receiveMessage);
function receiveMessage(event) {
    event.source.postMessage(event.data, "*");
    console.log(event);
}

iframe父子通讯

A.html

<iframe id="iframe" src="B.html" frameborder="0"></iframe>
<script>
  var iframe = document.getElementById("iframe");
  iframe.onload = function () {
    // 发送跨域数据
    iframe.contentWindow.postMessage("你好", "*");
  };
  // 接收消息
  window.addEventListener("message", receiveMessage);
  function receiveMessage(event) {
    console.log(event.data);
  }
</script>

B.html

// 接收消息
window.addEventListener("message", receiveMessage);
function receiveMessage(event) {
    event.source.postMessage(event.data, "*");
    console.log(event);
}

参考

前端 postMessage

相关文章
|
2月前
iframe的父子页面通信
【10月更文挑战第2天】
82 2
|
2月前
|
算法 安全 前端开发
基于postMessage和BroadcastChannel实现浏览器跨Tab窗口通信的方法介绍
基于postMessage和BroadcastChannel实现浏览器跨Tab窗口通信的方法介绍
90 0
|
5月前
|
安全 前端开发 JavaScript
跨域iframe通信
跨域iframe通信
|
6月前
|
监控 前端开发 JavaScript
JS Navigator.sendBeacon 可靠的、异步地向服务器发送数据
Navigator.sendBeacon 是一个用于发送少量数据到服务器的 API,尤其适用于在页面即将卸载时发送数据,如日志记录、用户行为分析等。 与传统的 AJAX 请求不同,sendBeacon 方法的设计目标是确保数据在页面卸载(例如用户关闭标签页或导航到新页面)时能够可靠地发送。 Navigator.sendBeacon 方法可用于通过 HTTP POST 将少量数据异步传输到 Web 服务器。 它主要用于将统计数据发送到 Web 服务器,同时避免了用传统技术(如:XMLHttpRequest)发送分析数据的一些问题。
133 1
|
7月前
|
移动开发 前端开发 安全
iframe实现跨域通信的方法
iframe实现跨域通信的方法
210 6
|
7月前
|
JavaScript
iframe 跨域通信和不跨域通信
iframe 跨域通信和不跨域通信
|
移动开发 安全 JavaScript
html5使用postMessage解决跨域和跨窗口消息传递的解决方案
html5使用postMessage解决跨域和跨窗口消息传递的解决方案
149 0
|
Web App开发 移动开发 安全
「趣学前端」关于iframe跨域通信
用技术实现梦想,用梦想打开创意之门。之前开发遇到了iframe跨域通信的问题,今天分享一下解决方案,顺便总结一波知识点。
961 1
「趣学前端」关于iframe跨域通信
|
XML 前端开发 JavaScript
Ajax --- 客户端与服务器端之间传递数据
Ajax --- 客户端与服务器端之间传递数据
122 0