This question already has answers here:
Crossbrowser onbeforeunload?
(5个答案)
6年前关闭。
jQuery
上面的代码可在IE和Safari中正常运行,但不能在Firefox和Chrome中运行。
请注意,某些事件可能会被忽略:
HTML5规范指出,在此事件期间,可能会忽略对window.showModalDialog(),window.alert(),window.confirm()和window.prompt()方法的调用。
关于AJAX的重要说明:
如果您要在用户离开时拨打AJAX电话,则请求可能会在完成之前被取消(中断)。您可以关闭
2017年更新:
用户离开时,许多浏览器不再支持警报对话框中的自定义文本。
Chrome,Firefox,Opera和Safari的最新版本不显示任何自定义文本。
Edge和IE仍然支持此功能。
(5个答案)
6年前关闭。
jQuery
onbeforeunload
在Chrome和Firefox中无法使用。它可以在IE和Safari中正常运行。jQuery(window).bind('onbeforeunload' ,function () {
mymethod();
});
上面的代码可在IE和Safari中正常运行,但不能在Firefox和Chrome中运行。
最佳答案
根据MDN的window.onbeforeunload参考,
该函数应为事件对象的returnValue属性分配一个字符串值,并返回相同的字符串。
观察this jsFiddle
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仍然支持此功能。
关于jquery - 为什么jQuery onbeforeunload无法在Chrome和Firefox中使用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22776544/
10-09 23:17