我正在尝试制作一个在导航时弹出的简单加载微调器。它在导航离开时使用“beforeunload”事件显示,并在完成后使用“load”事件再次隐藏自身。
问题是,当我将页面留在手机后台时,例如几个小时后,“beforeunload”事件触发并显示微调器。可能是因为 Android 上的 Chrome 正在部分卸载页面以节省内存。不过,旋转器不会自行消失,而且我似乎无法弄清楚如何让它以优雅的方式再次消失。
我应该使用其他事件来代替吗?
window.addEventListener("load", function() {
topSpinner.classList.add("closed");
});
window.addEventListener("beforeunload", function() {
topSpinner.classList.remove("closed");
});
Chrome 68(2018 年 7 月)引入了新的页面生命周期API https://developers.google.com/web/updates/2018/07/page-lifecycle-api:此链接中提供的状态图未显示系统(浏览器)调用beforeunload
在将页面放入之前frozen
状态,但这显然就是正在发生的事情。
有用的是,该 API 引入了两个新事件,这些事件会在页面进入和退出此状态时触发:freeze
and resume
.
我已经通过添加以下内容在移动 chrome 和 webview 显示上解决了这个问题:
document.addEventListener('resume', (event) => {
// The page has been unfrozen: remove the spinner if it's active
topSpinner.classList.add("closed");
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)