jquery:卸载还是卸载之前?

IT技术 javascript jquery
2021-03-21 23:16:47

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

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

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

1个回答

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

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

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

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

@NickCraver:不是通过 jQuery?某种参考会很好,否则这只是传播FUD
2021-04-26 23:16:47
window.onbeforeunload 是否在所有浏览器上触发(比如 IE6)?
2021-05-10 23:16:47
@Kangkan - 是的,虽然一些更邪恶的广告块会阻止这种情况发生……但它们非常罕见。
2021-05-13 23:16:47
jQuery 文档本身说,如果对本机功能的支持是好的跨浏览器,则优先使用本机 JavaScript 而不是 jQuery。原因之一是本机函数内置于浏览器中,因此比 jQuery 库函数快得多。
2021-05-13 23:16:47
@Nick Craver - 为什么不应该通过 jQuery 绑定它?它不太可靠还是什么?
2021-05-16 23:16:47