我有一个Web应用程序,通过它我也可以控制一些代码与iframe进行通信。我使用频道消息传递在父应用程序和iframe之间进行通信。在Chrome,Safari和Firefox中都可以正常使用,但是在Firefox中我收到一条错误消息。
在iframe中,我初始化频道:
// Setup channel messaging to the host
const channel = new MessageChannel();
channel.port1.onmessage = (event: MessageEvent) => {
onRequest(event);
};
port1.start();
window.parent.postMessage('init', hostname, [channel.port2]);
在父级,我收听“ init”消息:
window.addEventListener('message', (event) => {
event.ports[0].onmessage = ((event: MessageEvent) => {
responseHandler(event);
});
});
仅在Firefox中(在MacOS上经过测试),我收到以下错误消息:“ ERROR TypeError:” event.ports [0]未定义“,并且在查看事件时:
ports: []
在Chrome和Safari端口中,如右图所示,我没有收到错误。
如前所述,它在Firefox中仍然可以正常工作,但是如何摆脱错误消息?