移动浏览器在关闭浏览器时不会触发`beforeunload`/`unload`事件。

9
我正在移动浏览器上工作已经三个月了,现在我遇到一个有关beforeunloadunload的问题。在两种情况下它们都无法正常工作。当我关闭标签时,浏览器经常调用它们。但是当用户通过某些例行程序关闭浏览器时,为什么这些事件根本没有被触发?问题出在哪里?

根据MDN文档,beforeunloadload事件自Chrome for Android版本18和Firefox for Android版本4起得到支持。请提供相关代码的最小部分,以便我们更好地帮助您。 - Maher Fattouh
1
为了防止不必要的弹窗,浏览器可能不会显示在beforeunload事件处理程序中创建的提示,除非页面已经与用户进行了交互,或者甚至根本不会显示它们。来源:https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event - Maher Fattouh
1个回答

7
许多开发人员将unload事件视为一个可靠的回调,并将其用作会话结束的信号,以保存状态并发送分析数据。但是,在移动设备上,这样做是非常不可靠的!在许多典型的卸载情况下,包括从移动设备的标签切换器关闭标签或从应用切换器关闭浏览器应用程序时,unload事件不会触发。
因此,更好的做法是依赖visibilitychange事件来确定会话何时结束,并将隐藏状态视为最后可靠的保存应用程序和用户数据的时间点。
来源:页面生命周期API

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接