onbeforeunload没有在chrome上工作

时间:2016-04-20 19:57:35

标签: javascript jquery onbeforeunload

在我的页面中,我有一个打开页面并在其中写入一段代码的按钮。

$("#button").on("click", function(){

var x = window.open('', '', 'width=800, height=600');

x.document.open().write(something);
}

我想在父窗口中触发一个函数,在我的子窗口关闭时更新一个元素。我到目前为止尝试使用:

$("#button").on('click', function(){

var x = window.open('', '', 'width=800, height=600');

x.onbeforeunload = function(){    
console.log('closed');    
}

x.document.open().write(something);

}

到目前为止我发现的是Chrome阻止我使用" onbeforeunload"或任何类型的卸载事件。

因此,如果有人能够解决这个问题的解决方法,我会非常高兴。

更新

这是小提琴:https://jsfiddle.net/cgckg3zh/

我还在Firefox中测试过,正在运行。

3 个答案:

答案 0 :(得分:1)

顺便说一句,这是deprecated on Chrome

答案 1 :(得分:0)

我在关闭页面上遇到同样的问题,但最终我意识到使用事件是不可靠的,因为某些浏览器不支持它... 最后,对于我的项目,我使用signalr检测关闭窗口或导航页面... 我确信所有主流浏览器都不支持任何javascript事件。

答案 2 :(得分:0)

这是一种更直接的方法。

$(window).on('beforeunload', function() {
    return "You should keep this page open.";
});

返回的消息可以是您想要的任何内容,如果您没有任何内容添加到Chrome已显示的消息中,则可以包含空字符串。结果如下:

enter image description here

希望这可以帮助你:)