似乎WebInClcept方法(如shouldInterceptRequest(),onPageStarted()和shouldOverrideUrlLoading())仅侦听导致WebView加载新页面的URL更改。有没有办法在WebView上检测片段ID的URL更改,即index.html#fragment_id?
答案 0 :(得分:7)
我知道这是一个非常古老的问题,但我找到了一个在Stack Overflow中无处可用的解决方案。 jpetitto的答案有效但如果我们使用散列更改进行路由或其他此类功能,它会混淆javascript。
我发现通过覆盖doUpdateVisitedHistory
中的方法WebViewClient
,我们可以捕获有关哈希更改的网址。例如,请参阅下面的代码段。
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
super.doUpdateVisitedHistory(view, url, isReload);
// somecode to run on hash change.
}
}
注意:此方法在哈希更改和网址更改时触发。
答案 1 :(得分:0)
正如mitvenkatesan在他对该问题的评论中所描述的那样,这可以通过覆盖WebView内页面的window.onhashchange()事件来实现。
事实证明,此解决方案已在another question中解决。