beforeunload中的postMessage失败

时间:2017-04-20 17:46:45

标签: javascript events iframe ionic2 message

我看到在Ionic 2浏览器的postMessage()窗口事件中调用beforeunload时,消息永远不会到达父级。如果在unloadload事件中发布了相同的消息,则会成功收到该消息。在JQuery中:

$(window).on('beforeunload', function() {
    parent.postMessage('TheMessage', 'domain.com');  //NOT received by parent
});     

$(window).on('unload', function() {
    parent.postMessage('TheMessage', 'domain.com');  //Received by parent
});

$(window).load(function(){
    parent.postMessage('TheMessage', 'domain.com');  //Received by parent
});

在这种情况下,我们将从IFrame发布到父级,两个网页都由同一所有者控制,但来自不同的域。

这是预期的行为吗?我看到alert is not allowed in beforeunload,但没有看到关于postMessage的任何规则:

  

自2011年5月25日起,HTML5规范声明要调用   window.alert(),window.confirm()和window.prompt()方法可能是   在这次活动中被忽略了。

有没有办法在postMessage中使用beforeunload

1 个答案:

答案 0 :(得分:0)

这只发生在iOS中,似乎无法更改它。在Android中,beforeunload按预期触发。