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
方法上注入我的脚本来解决这个问题
我一直在尝试将一些 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
方法上注入我的脚本来解决这个问题