jquery:卸载或beforeunload?

当用户从当前页面浏览时,我想发布消息到服务器,我现在使用.unload,但结果是不可靠的,即使在它的文档中也是如此:

卸载事件的确切处理因浏览器的版本而异。 例如,某些版本的Firefox在遵循链接时会触发事件,而在窗口closures时则不会。 在实际使用中,应该在所有支持的浏览器上testing行为,并与专有的beforeunload事件进行对比。

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

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

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

unload事件本身并不意味着要完成工作,只需要清理对象……随着垃圾收集器越来越好,浏览器甚至无法启动unload事件。

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