window.postMessage()实现iframe跨域消息

2021-06-28  本文已影响0人  依然_8deb

event对象有三个属性,分别是origin,data和source。
event.data表示接发送过来的数据。
event.origin表示postMessage的发送来源,包括协议,域名和端口;
event.source表示消息源,消息的发送窗口/iframe。

示例:A页面中包含一个iframe,iframe加载B页面
父窗体与子窗体通信
A页面(父窗体)代码:

window.addEventListener('message', function(e) {// 监听 message 事件
      if (e.origin !== "https://www.runoob.com") {  // 验证消息来源地址
            return;
        }
  if (e.data.test=="Test") {
    alert(e.data.test);
  }
}, false);

B页面(子窗体)代码:

btnClick: function (o, e) {
  window.parent.postMessage({ test: "Test"}, "*");
  //{ test: "Test" }为data属性,"*" 为origin属性
}

子窗体与父窗体通信
A页面(父窗体)代码:

function btnClick(o, e) {
document.getElementById("iframeContent").contentWindow.postMessage({ test: "Test"});
};

B页面(子窗体)代码:

 window.addEventListener('message', function(e) {
  if (e.data.test=="Test") {
    alert(e.data.test);
  }
}, false);
上一篇下一篇

猜你喜欢

热点阅读