为什么不触发 Android 网页视图的可见性更改事件

Why does visibilitychange event not fire for Android webview?

本文关键字:可见性 事件 视图 Android 网页 为什么不      更新时间:2023-09-26

我的应用程序有多个安卓网页视图,在站点范围的 JS 中,我有:

window.addEventListener('beforeunload', function() {console.log("beforeunload");});
// subscribe to visibility change events
document.addEventListener('visibilitychange', function() {
    console.log('visibility changed!!!');
}

当我 (1) 点击"主页"按钮进入主屏幕或 (2) 调用任务切换器移动到其他应用程序时,beforeunloadvisibilitychange都不会触发。

澄清一下,可见性更改在Android Chrome中被正确触发。网页视图有什么不同?

Web 视图的可见性计算公式为:

visible = !paused && (!attached to window || window visible)

换句话说,如果 Web 视图 超然。这是因为 Web 视图不知道窗口可见性 分离时的状态,并且有许多应用使用 分离时分离的 Web 视图,因此需要分离的 Web 视图 正常运行,就好像它是可见的一样。

您没有注意到的另一个"奇怪之处"是页面可见性状态什么都没有 与WebView.setVisibility有关

如果要通过应用控制页面可见性,请使用 WebView.onPause/onResume.

感谢刘波。

是的!它不是在 Android5.1 中触发的,而是使用事件 focusblur