我无法在 IE 中取消 onbeforeunload。我不确定问题是什么,但将其设置为未定义没有效果。我想在一定条件下解除事件的绑定(bind)。但在所有其他浏览器中它都可以工作。
代码如下:-
$(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!!!','*');
});
});
最佳答案
以正确的方式添加事件并删除它们
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);
关于javascript - onbeforeunload 取消绑定(bind)在 IE 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51617898/