替代jquery库来触发beforeunload / unload事件

时间:2014-05-03 13:54:01

标签: javascript jquery

编辑:由于我的问题似乎不清楚 - 我想要的只是在用户离开页面时添加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
    }
})

没有任何事情发生。我也尝试过卸载事件,但仍然没有运气。

1 个答案:

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