在 webView.loadDataWithBaseURL() 上通知

Notify on webView.loadDataWithBaseURL()

我试图在通过 webView.loadDataWithBaseURL() 将数据加载到我的网络视图后立即将一些 Javascript 注入我的网络视图,但我无法知道数据何时真正完成加载.这个方法是同步的吗?我可以只依赖立即加载的数据,因为它来自内存吗?我问是因为我注入的 Javascript 似乎没有在页面上看到元素。我假设这是因为在注入 JS 之前尚未加载视图。 (我还没有证明这一点。)

您可以使用 setWebViewClient() and implement its onPageFinished() 向您的 WebView 注册 WebViewClient 以了解页面何时加载完成。

postVisualStateCallback 自定义 WebViewClient 解决了我的问题:

class WebViewWithCallback(private val webView: WebView, private val callback: () -> Unit): WebViewClient(){
        override fun onPageFinished(view: WebView?, url: String?) {
            super.onPageFinished(view, url)
            webView.postVisualStateCallback(0, object: WebView.VisualStateCallback() {
                override fun onComplete(p0: Long) {
                    callback.invoke()
                }
            })
        }
    }