在WebView中侦听URL片段ID更改

时间:2014-10-24 20:17:11

标签: android android-webview webviewclient

似乎WebInClcept方法(如shouldInterceptRequest(),onPageStarted()和shouldOverrideUrlLoading())仅侦听导致WebView加载新页面的URL更改。有没有办法在WebView上检测片段ID的URL更改,即index.html#fragment_id?

2 个答案:

答案 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中解决。