我的 web 视图加载了一个 url,在完成加载后,该 url 被更改为另一个 url。我怎样才能抓住新的网址。getURL()
总是返回第一个 url 而不是第二个。如果我使用浏览器,我可以看到新的 URL,但如果从 webview 中看不到。
问问题
41036 次
3 回答
53
您可以使用 webClient 并实现shouldOverrideUrlLoading在 WebView 加载它们之前拦截所有 url。
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Here put your code
Log.d("My Webview", url);
// return true; //Indicates WebView to NOT load the url;
return false; //Allow WebView to load url
}
});
于 2013-11-07T10:46:40.473 回答
5
利用
getOriginalUrl ()
它返回最初为当前页面请求的 URL
getUrl ()
并不总是与传递给的 URL 相同,WebViewClient.onPageStarted
因为尽管该 URL 的加载已经开始,但当前页面可能没有改变。
getOriginalUrl ()
获取当前页面的原始 URL。这并不总是与传递给的 URL 相同,WebViewClient.onPageStarted
因为尽管该 URL 的加载已经开始,但当前页面可能没有改变。此外,可能存在重定向导致与最初请求的 URL 不同的 URL。
于 2013-11-07T09:07:46.747 回答
0
在我的情况下,WebViewClient 没有显示 webview 上是否有更改,我认为这与正在运行的 web 有关。
我可以使用 OnProgressChanged 从 WebChromeClient 获取该信息,我不知道这是否会对人们有所帮助,但这里是代码:
webview.webChromeClient = object : WebChromeClient(){
override fun onProgressChanged(view: WebView?, newProgress: Int) {
super.onProgressChanged(view, newProgress)
if (newProgress == 100) {
Log.d("testing", webview.getOriginalUrl())
Log.d("testing", webview.url)
}
}
}
这样我就可以知道加载了什么以及何时完成。
于 2019-10-02T08:00:40.090 回答