编辑:由于我的问题似乎不清楚 - 我想要的只是在用户离开页面时添加confirm()
消息,方法是关闭浏览器/输入新链接/点击现有链接
在阅读卸载/卸载事件之前,我已经阅读了很多相关主题,但实际上没有一个可以帮助我,可能是我做错了。
我通过点击所有链接来运行脚本,但是'beforeunload'事件在我的情况下不起作用
普通脚本
$('a').on('mousedown', function(){
var message = 'You are about to leave the page. Continue?'
var result = confirm(message)
if (result) {
// some stuff
} else {
// some other stuff
}
})
尝试使用beforeunload
$(window).on('beforeunload', function(){
var message = 'You are about to leave the page. Continue?'
var result = confirm(message)
if (result) {
// some stuff
} else {
// some other stuff
}
})
没有任何事情发生。我也尝试过卸载事件,但仍然没有运气。
答案 0 :(得分:7)
beforeunload
事件有点奇怪。大多数浏览器不允许您从处理程序触发确认对话,因为这将允许站点不断弹出确认对话而不是导航离开页面。相反,您应该返回要显示的消息,例如:
$(window).on('beforeunload', function(e) {
var msg = 'You are about to leave the page. Continue?';
(e || window.event).returnValue = msg; //IE + Gecko
return msg; //Webkit
});
如果您想在结果对话退出后运行其他javascript,请添加onunload
听众。
修改强>
正如评论中所指出的,这些事件因浏览器而异。例如,最新版本的gecko(firefox)不允许自定义消息。