javascript - onbeforeunload 取消绑定(bind)在 IE 上不起作用

标签 javascript internet-explorer

我无法在 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/

相关文章:

javascript - 如何将 JSON 中的数据显示到 html 表中

javascript - 从 setInterval 调用的方法,执行到一半停止

javascript - 为什么 javascript 在具有共享/部分 View 的 asp.net mvc View 中不起作用

CSS IE 兼容性

html - CSS 属性仅在 IE 中被覆盖

javascript - D3 - 在循环中插入内部元素

javascript - 使用 Shift 键选择多个 div

c# - 使用 Selenium 将文本发送到不适用于 IE9 的 tinymce 控件

html - 元素符号和 float 图像之间的空间

javascript - IE 错误 'Style' 为空或不是对象 - lightbox-resize.js