jQuery onbeforeunload
无法在Chrome和Firefox中使用。它在IE和Safari中正常工作。
jQuery(window).bind('onbeforeunload' ,function () {
mymethod();
});
以上代码在IE和Safari中正常运行,但在Firefox和Chrome中无效。
答案 0 :(得分:37)
根据MDN的window.onbeforeunload参考,
该函数应将字符串值赋给Event对象的returnValue属性,并返回相同的字符串。
jQuery(window).bind('beforeunload', function(e) {
var message = "Why are you leaving?";
e.returnValue = message;
return message;
});
请注意某些事件可能会被忽略:
[...] HTML5规范声明调用window.showModalDialog(), window.alert(),window.confirm()和window.prompt()方法在此活动期间可能会被忽略。
关于AJAX的一个重要说明:
如果您在用户离开时尝试进行AJAX呼叫,则可能会在完成之前取消(中断)请求。您可以关闭async
选项作为解决此问题的方法。例如:
$.ajax({
url: "/",
type: "GET",
async: false
});
2017年更新:
当用户离开时,许多浏览器不再支持警报对话框中的自定义文本。
最新版本的Chrome,Firefox,Opera和Safari不会显示任何自定义文字。
Edge和IE仍支持此功能。