Android 页面重新加载时未调用 Webview onReceivedTitle

Android Webview onReceivedTitle not called on page reload

我一直在尝试将一些 js 注入到我应用程序的 webview 中。一直在用
onReceivedTitle WebChromeClient 的方法,因为我想在页面加载时执行 js。

这一直有效到现在。但是最近观察到 onReceivedTitle 并没有调用我们重新加载网页,类似于 window.location.reload.

首先,我不明白为什么不应该调用它。或者它应该是,这是一个错误?

其次,既然我们知道它没有被调用,我还能通过js注入到哪里?

谢谢。

显然,这不是 Android 错误,而是 Chrome 或 Chromium-based WebView 错误 。应该报告给http://crbug.com/.

我建议您尝试使用自定义 WebViewClient:

的解决方法

您必须使用自定义 WebViewClient 才能完成此操作。您将重写 onPageFinished() 方法,以便在新页面完成加载时您可以将 webview 设置为适当的标题。

下面是上面的示例实现:

WebView mWebView = (WebView) findViewById(R.id.mwebview);
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        ExperimentingActivity.this.setTitle(view.getTitle());
    }
});

这里的回答会很有用:https://whosebug.com/a/8193479/9080948

这似乎是 Chrome 中的一个错误。我通过在 WebviewClient.

onPageFinished 方法上注入我的脚本来解决这个问题