显然,window.onbeforeunload已经遇到了Chrome的问题,正如我从遇到的所有问题中看到的那样。最近的工作是什么?
我唯一接近工作的是this:
window.onbeforeunload = function () { return "alert" };
但是,如果我用“alert”(“blah”)之类的东西替换返回“alert”,我从Chrome中得不到任何结果。
我在this question看到谷歌故意阻止这个。对他们有好处......但如果有人关闭窗口我想要进行AJAX调用怎么办?在我的情况下,我想知道有人离开我的网站上的聊天室,由窗口关闭发出信号。
我想知道是否有办法 (a):修复window.onbeforeunload调用,以便我可以将AJAX放在那里 要么 (b):通过其他方式确定Chrome中的窗口已关闭
回答:
$(window).on('beforeunload', function() {
var x =logout();
return x;
});
function logout(){
jQuery.ajax({
});
return 1+3;
}
有点混搭,但它对我有用。 1 + 3确保正在调用注销功能(当你试图离开时,如果它在弹出窗口上成功,你会看到4)。
这是一种更直接的方法。
$(window).on('beforeunload', function() {
return "You should keep this page open.";
});
返回的消息可以是您想要的任何内容,如果您没有任何内容添加到Chrome已显示的消息中,则包括空字符串。结果如下:
根据MDN,
该函数应将字符串值赋给Event对象的returnValue属性并返回相同的字符串。
这是以下内容
window.addEventListener( 'beforeunload', function(ev) {
return ev.returnValue = 'My reason';
})
截至69.0.3497.92,Chrome尚未达到标准。然而,有一个bug report提交,并且review正在进行中。
window.addEventListener('beforeunload', function (e) {
// Cancel the event as stated by the standard.
e.preventDefault();
// Chrome requires returnValue to be set.
e.returnValue = '';
});
window.location = 'about:blank';