Android 的 webview 中載入一個 SPA (單一頁面應用程式)網站
我透過 shouldoverrideurl 方法來監聽 Webview 的 URL,對 URL 進行某些預處理
但是,SPA 中大部分是 hash 值變化,因此這個方法就監聽不到變化
從 a.html#/home 跳到 a.html#/other
a.html#/home
a.html#/other
請問有辦法監聽 hash 值的變化嗎?
ringa_lee
只能透過 HTML5 新增加的 window.onhashchange() API。 shouldoverrideurl 應該監聽不到吧。
window.onhashchange()
shouldoverrideurl
如果你不想修改 js 程式碼,可以在 java 中註入:
定義一個處理 js 的類別:
private class MyJSI { public void doStuff() { // 你的逻辑 } }
注入到 webview 中:
webView.addJavascriptInterface(new MyJSI(), "myjsi");
監聽 onhashchange 事件:
webview.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:window.onhashchange = function() { myjsi.doStuff(); };"); } });
只能透過 HTML5 新增加的
window.onhashchange()
API。shouldoverrideurl
應該監聽不到吧。如果你不想修改 js 程式碼,可以在 java 中註入:
定義一個處理 js 的類別:
注入到 webview 中:
監聽 onhashchange 事件: