jquery:unload还是beforeunload?

Bin*_*hen 44 javascript jquery

我想在用户离开当前页面时向服务器发布消息,我现在正在使用.unload,但结果不可靠,即使在其文档中也是如此:

卸载事件的确切处理因浏览器的版本而异.例如,某些版本的Firefox会在跟踪链接时触发事件,但不会在窗口关闭时触发.在实际使用中,应该在所有支持的浏览器上测试行为,并与专有的beforeunload事件进行对比.

我应该使用beforeunload事件吗?它可靠吗?

Nic*_*ver 61

是的,beforeunload更可靠,但一定要直接分配(不是通过jQuery绑定),如下所示:

window.onbeforeunload = function() { /* do stuff */ };
Run Code Online (Sandbox Code Playgroud)

将unload本身并不意味着工作的事件做,只是对象......作为垃圾收集器变得越来越好,还有一个供浏览器,甚至解雇的原因较少的清理unload活动.

另请注意,对于您的特定情况,您必须向服务器发出同步请求...否则浏览器仍然不会等待AJAX​​调用完成.

  • @Nick Craver - 为什么不通过jQuery绑定它?它不太可靠或什么的? (13认同)
  • jQuery文档本身表示如果对本机函数的支持是良好的跨浏览器,则优先使用本机JavaScript.一个原因是本机函数内置于浏览器中,因此比jQuery库函数快得多. (4认同)
  • @NickCraver:不是通过jQuery?某种参考会很好,否则这只是传播FUD (3认同)