【问题标题】:Why does visibilitychange event not fire for Android webview?为什么没有为 Android webview 触发 visibilitychange 事件?
【发布时间】:2023-03-20 07:30:01
【问题描述】:

我的应用有多个 android web 视图,在站点范围的 JS 中,我有:

window.addEventListener('beforeunload', function() {console.log("beforeunload");});

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

beforeunloadvisibilitychange 在我 (1) 点击“主页”按钮以转到主屏幕或 (2) 调用任务切换器以转到不同的应用程序时都不会触发。

为了澄清,visibilitychange 在 Android Chrome 中被正确触发。 Webview 有什么不同?

【问题讨论】:

    标签: javascript android webview


    【解决方案1】:

    webview 的可见性计算如下:

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

    换句话说,如果 webview 是,则窗口可见状态将被忽略 分离。这是因为 webview 不知道窗口可见性 分离时的状态,并且有许多应用程序使用 分离时分离的 webview,因此期望分离的 webview 正常运行,就好像它是可见的一样。

    您没有注意到的另一个“奇怪”是页面可见性状态没有任何内容 与WebView.setVisibility有关

    如果您想控制应用中的页面可见性,请使用 WebView.onPause/onResume.

    感谢刘博。 link

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多