Android 的 webview 中載入一個 SPA (單一頁面應用程式)網站
我透過 shouldoverrideurl 方法來監聽 Webview 的 URL,對 URL 進行某些預處理
但是,SPA 中大部分是 hash 值變化,因此這個方法就監聽不到變化
從 a.html#/home
跳到 a.html#/other
請問有辦法監聽 hash 值的變化嗎?
学习ing2017-06-12 09:27:05
只能透過 HTML5 新增加的 window.onhashchange()
API。 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(); };");
}
});