window.addEventListener("消息", getData);在野生动物园中不起作用?
Posted
技术标签:
【中文标题】window.addEventListener("消息", getData);在野生动物园中不起作用?【英文标题】:window.addEventListener("message", getData); doesn't work in safari? 【发布时间】: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 个小时,任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:似乎 safari 没有完全支持,但如果你检查 addEventListener
的浏览器支持,它应该支持,你可以看到
这些没有支持。你可以阅读更多关于它here
【讨论】:
它支持我能够成功地从我的反应发送 postMessage 到 JS 文件。但我不能做相反的事情。我错过了一些东西以上是关于window.addEventListener("消息", getData);在野生动物园中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
window.addEventListener 正在监听 window.parent.postMessage 两次
JS window.addEventListener仅适用于一页
$window.addEventListener 仅在第一次工作,但下一次在病房中无法通过 $watch 工作