【问题标题】:jquery: unload or beforeunload?jquery:卸载还是卸载前?
【发布时间】:2011-05-21 13:37:27
【问题描述】:

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

卸载事件的准确处理 因版本而异 浏览器。例如,某些版本 Firefox 触发事件时 链接被关注,但不是当 窗口关闭。在实际使用中, 行为应该在所有测试 支持的浏览器和对比 使用专有的 beforeunload 事件。

我应该使用 beforeunload 事件吗?靠谱吗?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

可以,beforeunload比较靠谱,但是一定要直接赋值(不是通过jQuery绑定的),像这样:

window.onbeforeunload = function() { /* do stuff */ };

unload 事件本身并不是为了完成工作,只是清理对象...随着垃圾收集器越来越好,浏览器甚至没有理由触发 unload 事件。

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

【讨论】:

  • window.onbeforeunload 会在所有浏览器(比如 IE6)上触发吗?
  • @Kangkan - 是的,虽然一些更邪恶的广告块会阻止这种情况......不过它们非常罕见。
  • @Nick Craver - 为什么不应该通过 jQuery 绑定它?是不是不太可靠?
  • @NickCraver:不是通过 jQuery?某种参考会很好,否则这只是在传播 FUD
  • jQuery 文档本身说,如果对原生函数的跨浏览器支持良好,则优先使用原生 JavaScript 而非 jQuery。一个原因是原生函数内置在浏览器中,因此比 jQuery 库函数快得多。
猜你喜欢
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 2021-10-01
  • 2021-07-02
相关资源
最近更新 更多