显然,window.onbeforeunload已经遇到了Chrome的问题,正如我从遇到的所有问题中看到的那样。最近的工作是什么?
我唯一接近工作的是this:
window.onbeforeunload = function () { return "alert" };
但是,如果我用“alert”(“blah”)之类的东西替换“alert”,我就不会从Chrome中获得任何内容。
我在this question中看到Google有意阻止了这一点。对他们有好处......但如果有人关闭窗口我想要进行AJAX调用怎么办?在我的情况下,我想知道有人离开我的网站上的聊天室,由窗口关闭发出信号。
我想知道是否有办法要么
(a):修复window.onbeforeunload调用,以便我可以将AJAX放在那里
或
(b):通过其他方式确定Chrome窗口已关闭
答案 0 :(得分:14)
答案:
$(window).on('beforeunload', function() {
var x =logout();
return x;
});
function logout(){
jQuery.ajax({
});
return 1+3;
}
有点混搭,但它对我有用。 1 + 3确保正在调用注销功能(当你试图离开时,如果它在弹出窗口中成功,你会看到4)。
答案 1 :(得分:3)
这是一种更直接的方法。
$(window).on('beforeunload', function() {
return "You should keep this page open.";
});
返回的消息可以是您想要的任何内容,如果您没有任何内容添加到Chrome已显示的消息中,则可以包含空字符串。结果如下:
答案 2 :(得分:2)
根据MDN,
该函数应为returnValue属性指定字符串值 的Event对象并返回相同的字符串。
以下是
window.addEventListener( 'beforeunload', function(ev) {
return ev.returnValue = 'My reason';
})
答案 3 :(得分:1)
从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';
答案 4 :(得分:0)
这解决了我的问题,为什么它在我的应用程序中不起作用:
请注意,在关闭窗口之前,用户必须以某种方式与页面交互(单击某处),否则 beforeunload 将被忽略,以免滥用。