【问题标题】:Event to be triggered when leaving website or closes the browser离开网站或关闭浏览器时触发的事件
【发布时间】:2012-11-30 14:39:41
【问题描述】:

当用户通过在浏览器中输入地址并点击返回或用户单击“x”按钮关闭浏览器离开网站时,我正在尝试执行 javascript 函数。

我尝试了卸载事件,但我无法收到警报

这就是我正在做的:

$(window).unload(function () {
    alert("Are you sure?");
});

还有

$(body).unload(function () {
    alert("Are you sure?");
});

我想不通了!

【问题讨论】:

标签: javascript jquery javascript-events


【解决方案1】:

当页面卸载时,您可以监听在 unload 事件之前触发的 beforeunload 事件。

$(window).on('beforeunload', function(){
    // ...
})

【讨论】:

  • beforeunload 希望你返回一个字符串,我相信,这可能值得指出。
【解决方案2】:

某些浏览器(如 Chrome)会在卸载事件处理程序中阻止警报,以完全防止此类烦人的消息。尝试 console.log 或在其中设置断点以查看当您没有警报时是否触发了处理程序。

类似的问题:

window.onunload is not working properly in Chrome browser. Can any one help me?

您只能通过 returning a string in a beforeunload handler (HT @undefined) 传递警报,但我什至会避免这样做,因为弹出窗口通常很糟糕,而且大多数人会做最少的处理来解决 make-this-thing-go -away 选项,然后才真正考虑盒子的内容。

【讨论】:

    【解决方案3】:

    你在 window.onbeforeunload 中定义的函数,如果它返回一个字符串,它将弹出一个带有该消息的确认导航提示。

    警报可能会被忽略!

    window.onbeforeunload = function() {
        return "All unsaved data will be lost. Are you sure?";
    };
    

    某些浏览器处理 onbeforeunload 的方式不同。例如,最近的 Firefox 将忽略您的返回字符串并仅显示一条标准消息。

    【讨论】:

      【解决方案4】:
      $(window).bind('beforeunload', function(){
          alert("Are your sure?")
      });
      

      【讨论】:

        猜你喜欢
        • 2012-10-05
        • 2016-04-23
        • 2011-03-16
        • 1970-01-01
        • 2011-06-20
        • 2023-04-11
        • 2017-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多