Javascript 卸载/卸载事件前触发器的替代jquery库

Javascript 卸载/卸载事件前触发器的替代jquery库,javascript,jquery,Javascript,Jquery,编辑:由于我的问题似乎不清楚-我只想在用户关闭浏览器/键入新链接/单击现有链接离开页面时添加confirm()消息 在卸载/卸载事件之前,我已经阅读了很多相关的主题,但没有一个能够真正帮助我,可能是我做错了smth 我通过单击所有链接使脚本正常工作,但是“beforeunload”事件在我的情况下不起作用 普通脚本 $('a').on('mousedown', function(){ var message = 'You are about to leave the page. Cont

编辑:由于我的问题似乎不清楚-我只想在用户关闭浏览器/键入新链接/单击现有链接离开页面时添加
confirm()
消息

在卸载/卸载事件之前,我已经阅读了很多相关的主题,但没有一个能够真正帮助我,可能是我做错了smth

我通过单击所有链接使脚本正常工作,但是“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
    }
})
在卸载之前尝试

$(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
    }
})

什么也没有发生。我也尝试过卸载事件,但仍然没有成功

卸载前事件有点奇怪。大多数浏览器不允许您从处理程序触发确认对话,因为这将允许站点不断弹出确认对话,而不是离开页面。相反,您应该返回要显示的消息,例如:

$(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)不允许自定义消息。

您确定这会起作用吗?另请注意,结尾处有一个语法错误。这是代码片段产生的文档页面(使用
窗口。addEventListener
):
onunload
onbeforeunload
在浏览器中可能有不一致的行为,例如,FF不允许自定义消息(最新版本???)和onunload事件无法触发(opera?),等等。。。现在重读OP的问题,我认为这回答了问题+1在编辑之后,您只能从onbeforeunload事件返回字符串。这将提示一个确认框。请注意,FF不允许自定义消息AFAIK。无论如何,使用此事件可能会遇到许多其他问题,您应该尽可能避免此问题。如果有其他库可以在关闭浏览器时实现确认对话框等?@skzd这不是jQuery功能,而是javascript功能。没有javascript库允许您在卸载之前使用
事件调用
confirm()
。事件的行为取决于浏览器的实现,javascript无法执行任何操作。如果任何库可以以任何方式修改它,它将被大量滥用,然后,应该尽快修复…那么我至少可以监听某些事件,如单击或关闭窗口,然后用确认消息调用我的函数吗?