我想在用户离开当前页面时向服务器发布消息,我现在正在使用.unload但结果不可靠,即使在其文档中也是如此:
卸载事件的确切处理 因版本而异 浏览器。例如,某些版本 当一个Firefox触发事件时 链接是遵循,但不是时 窗户关闭了。在实际使用中, 应对所有行为进行测试 支持的浏览器,并对比 使用专有的beforeunload 事件
我应该使用beforeunload事件吗?它可靠吗?
答案 0 :(得分:60)
是的,beforeunload
更可靠,但请务必直接分配(不是通过jQuery绑定),如下所示:
window.onbeforeunload = function() { /* do stuff */ };
unload
事件本身不是为了完成工作,只是清理对象......随着垃圾收集器变得越来越好,浏览器甚至没有理由激活{{1}事件。
另请注意,对于您的特定情况,您必须向服务器发出同步请求...否则浏览器仍然不会等待AJAX调用完成。