onbeforeunload取消绑定不适用于IE

时间:2018-07-31 16:19:25

标签: javascript internet-explorer

我无法在IE中取消onbeforeunload。我不确定这是什么问题,但将其设置为undefined不会起作用。我想在特定条件下取消绑定该事件。不过,在所有其他浏览器中都可以。

下面提到了代码:-

$(document).ready(function(){

    window.onbeforeunload = function(){
        return '';
    }

    window.addEventListener('message', function(e) {
    if(e.data==="UNBIND_UNLOAD"){
        window.onbeforeunload = undefined;
        window.close();
        }
    } , false);

    $('#sendParentMessage').click(function(){
    window.onbeforeunload = undefined;
        window.opener.postMessage('Hi Child How are you!!!','*');
    });
});

1 个答案:

答案 0 :(得分:1)

以正确的方式添加事件并将其删除

var unloadFunction = function () {
  return "test";
}
window.addEventListener('beforeunload', unloadFunction)

window.addEventListener('message', function(e) {
if(e.data==="UNBIND_UNLOAD"){
    window.removeEventListener('beforeunload', unloadFunction)
    window.close();
    }
} , false);

或更改代码以在函数内部使用检查而不是将其删除

var isActiveCheck = true
var unloadFunction = function () {
  return isActiveCheck ? "test" : undefined;
}
window.addEventListener('beforeunload', unloadFunction)

window.addEventListener('message', function(e) {
if(e.data==="UNBIND_UNLOAD"){
    isActiveCheck = false
    window.close();
    }
} , false);