我无法在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!!!','*');
});
});
答案 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);