Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在WebView中侦听URL片段id的更改_Android_Android Webview_Webviewclient - Fatal编程技术网

Android 在WebView中侦听URL片段id的更改

Android 在WebView中侦听URL片段id的更改,android,android-webview,webviewclient,Android,Android Webview,Webviewclient,WebViewClient方法,如shouldInterceptRequest()、onPageStarted()和shouldOverrideUrlLoading()似乎只侦听导致WebView加载新页面的URL更改。是否有一种方法可以检测Web视图上片段id(即index.html#fragment_id)的URL更改?正如mitvenkatesan在对问题的评论中所述,这可以通过覆盖Web视图内页面的window.onhashchange()事件来实现 事实证明,该解决方案已在中解决。我知

WebViewClient方法,如shouldInterceptRequest()、onPageStarted()和shouldOverrideUrlLoading()似乎只侦听导致WebView加载新页面的URL更改。是否有一种方法可以检测Web视图上片段id(即index.html#fragment_id)的URL更改?

正如mitvenkatesan在对问题的评论中所述,这可以通过覆盖Web视图内页面的window.onhashchange()事件来实现


事实证明,该解决方案已在中解决。

我知道这是一个非常古老的问题,但我发现了一个在堆栈溢出中任何地方都不可用的解决方案。jpetitto的答案是可行的,但如果我们使用哈希更改路由或其他类似功能,它会弄乱javascript

我发现,通过覆盖
WebViewClient
中的
doUpdateVisitedHistory
方法,我们可以捕获散列更改中的url。请参见下面的代码段示例

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.
        }

}

注意:此方法在散列更改和url更改时触发。

使用JavascriptInterface的webview和JavaScriptWindow中的hashChange事件,搜索了整个下午的用户:谢谢。这很好,它将检测url更改。但是,您能否建议如何在SPA中导航到页面而不重新加载页面。我正在搜索,但找不到任何提示。Thanks我相信您希望使用路径路由而不是哈希路由,而无需重新加载页面。在这种情况下,您可以使用历史api。