在Firefox中传输端口时发生PostMessage错误

时间:2019-04-11 10:10:07

标签: javascript firefox

我有一个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中仍然可以正常工作,但是如何摆脱错误消息?

0 个答案:

没有答案