【发布时间】:2021-06-27 10:47:06
【问题描述】:
我必须在 iframe 中加载 react js 应用程序,并且父应用程序正在使用以下代码向 iframe 反应应用程序发送数据:
const myiframe = document.getElementById('myIframe');
myiframe.contentWindow.postMessage('message', '*');
<iframe id='myIframe' name="my-iframe" src="http://localhost:3000" ></iframe>
在 iframe 应用中,我正在尝试接收数据:
useEffect(() => {
window.onmessage = function (event) {
console.log('event received')
}
}, []);
但是window.onmessage永远不会触发或间歇性触发。
我通过将 window.onmessage 保持在 useEffect 之外进行检查,但它不起作用。
有人遇到过这个问题吗?需要帮助。
谢谢。
【问题讨论】:
-
您好,您想尝试其他方式吗? (而不是向 iframe 发送消息)或者您必须使用发送消息?
-
我必须与 iframe 通信。 postMessage 在父应用程序中实现,因此我必须添加 window.onmessage 或 window.addEventListner('message')。还有什么办法?
-
在您的 react 源中的 componentDidMount() {window.parent.callMe = myFunc} 和您的父应用程序中只需调用 window.callMe(...your-parameters) 如果您对更多感兴趣,我可以给你看完整的示例代码
-
谢谢,我的父母是用角写的。 iframe 应用程序正在做出反应。如果可能,请分享示例。