Javascript 当计时器为timedout时,如何禁用window.onbeforeunload警报

Javascript 当计时器为timedout时,如何禁用window.onbeforeunload警报,javascript,jquery,timer,Javascript,Jquery,Timer,我使用window.onbeforeunload在用户离开页面时显示一个警报,效果很好 jQuery(window).bind('beforeunload', function (e) { var message = "Attention:"; e.returnValue = message; return message; }); 在我的项目中的一个视图中,我使用了一个计时器。问题是,当计时器超时时,会显示一个警报,随后是windo

我使用window.onbeforeunload在用户离开页面时显示一个警报,效果很好

  jQuery(window).bind('beforeunload', function (e) {
        var message = "Attention:";
        e.returnValue = message;
        return message;
    });
在我的项目中的一个视图中,我使用了一个计时器。问题是,当计时器超时时,会显示一个警报,随后是window.onbeforeunload警报

我只想在计时器超时时显示计时器警报,而不是同时显示两者


如何实现这一点?

正如Shaunak所评论的,在解除硬编码的beforeuload函数定义的绑定之前,您应该:

jQuery(window).unbind();
然后重新定义它:

jQuery(window).bind('beforeunload', function (e) {
        var message = "Attention:";
        e.returnValue = message;
        return message;
    });
要解除事件绑定,需要对原始处理程序的引用

请看下面

var func=function{ var消息=注意:; e、 返回值=消息; 返回消息; }; jQuerywindow.bind'beforeunload',func; //10秒后“卸载前”解除绑定 setTimeoutfunction{ jQuerywindow.unbind'beforeunload',func; “卸载前解除绑定”警报; }, 10000;
这是浏览器的行为,在警报时触发卸载之前。您可以通过使用“取消绑定”,然后再使用“绑定”来覆盖它。谢谢,请通过给出一个示例来详细说明。是的,这是有效的,但为什么在我使用$window.off“beforeunload”时它不起作用;或者window.onbeforeunload=nullTry:$document.readyfunction{$window.off'beforeunload',function{};};