【问题标题】:window.addEventListener("message", getData); doesn't work in safari?window.addEventListener("消息", getData);在野生动物园中不起作用?
【发布时间】:2021-12-31 23:21:39
【问题描述】:

我正在从 js 脚本向 iframe 发送一个 postmessage,它正在响应中

// 在 react 中监听 postMessage() 函数 // 反应文件

useEffect(() => {

function getData(e) {
  console.log("inside function");
  var origin = e.origin || e.originalEvent.origin;
  console.log("origin", origin);

  if (typeof e.data == "object" && "shopDomain" in e.data) {
    console.log(e.data);
  } else {
    console.log("not able to catch data");
  }
}
window.addEventListener("message", getData, false);
return () => {
  window.removeEventListener("message", getData, false);
};
}, []);

// JS文件

let win = iframe.contentWindow;
win.contentWindow.postMessage(
  {
    customerId: customerId_rs,
    parentLocation: window.location.host,
  },
  "*"
);

查看了各种网站,但找不到任何解决方案。在此花费了将近 10 个小时,任何帮助将不胜感激。

【问题讨论】:

    标签: javascript safari postmessage


    【解决方案1】:

    似乎 safari 没有完全支持,但如果你检查 addEventListener 的浏览器支持,它应该支持,你可以看到

    • 对于 touchstart 和 touchmove 事件,options.passive 参数默认为 true
    • 对于滚轮和鼠标滚轮事件,options.passive 参数默认为 true
    • options.signal 参数

    这些没有支持。你可以阅读更多关于它here

    【讨论】:

    • 它支持我能够成功地从我的反应发送 postMessage 到 JS 文件。但我不能做相反的事情。我错过了一些东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2016-02-26
    • 2015-10-22
    相关资源
    最近更新 更多