window.onbeforeunload:除非我设置了断点

时间:2019-01-31 20:12:36

标签: javascript jquery breakpoints timing onbeforeunload

我试图建立一个非常通用的OnBeforeUnload处理程序:

    console.log("WCW - Setting browser warning message");

    window.onbeforeunload = function(e) { 
      e.returnValue = "confirmationMessage";
      return e.returnValue;         
    };

    console.log("WCW - onbeforeunload is " +
        ((window.onbeforeunload ? "set":"still null")));

我了解我所能做的就是向浏览器发出发出一般警告的信号。在以后的迭代中,我可能会在发出return之前尝试进行一些自我清理。

我的问题是,这段代码运行后,window.onbeforeunload总是在控制台日志中返回null 除非 ,我在任何行上都设置了一个断点(例如,第一个日志消息),然后在停止时只是“ 继续”。然后,它起作用了。

Image of the console

我非常确定“哪里错了”这个问题是没有意义的,所以我问:“您对我如何寻找可能的问题有任何建议吗?”

我不知道这是一个范围的问题吗?第二条日志消息总是说onbeforeunload不为空...但是window是全局的,不是吗,调试器如何暂停修复该问题?

注意:

  • jQuery可用,但使用$(window).on('beforeunload'会遇到与此代码相同的问题

  • 添加延迟(setTimeout)设置处理程序不帮助;尝试了2、4和9秒

  • 在打开页面时每4秒添加一个递归调用以添加处理程序不会导致设置处理程序:window.onbeforeunload始终在控制台中返回NULL

  • 我定期看到该事件附带了一个jQuery核心方法,但这很少见

0 个答案:

没有答案