Window.parent.PostMessage在firefox中以相反的顺序工作

时间:2016-06-22 06:20:33

标签: firefox postmessage

我从iframe到父窗口有3个postmessage调用。这三个在firefox中反向执行。有解决方法吗?

1 个答案:

答案 0 :(得分:0)

是的,如果你在Firefox中一次执行JavaScript时使用多个postMessage,那么在执行完成之前浏览器不会处理它们,据我所知,Firefox总是处理这些后进先出而不是先进先出。

setTimeout是订购postMessage电话的一种方式,例如使用postMessage包装器:

function postMessage(otherWindow, message, targetOrigin, transfer) {
    setTimeout(
        function() {
            otherWindow.postMessage(message, targetOrigin, transfer);
        },
        0
    );
}

这会将所有postMessage调用推迟到后续执行的JavaScript中,浏览器将按顺序执行。