javascript - Android 的 webview 中怎麼監聽 url 的 hash 變化
ringa_lee
ringa_lee 2017-06-12 09:25:05
0
1
1856

場景

Android 的 webview 中載入一個 SPA (單一頁面應用程式)網站

過程

我透過 shouldoverrideurl 方法來監聽 Webview 的 URL,對 URL 進行某些預處理

但是,SPA 中大部分是 hash 值變化,因此這個方法就監聽不到變化

舉例

a.html#/home 跳到 a.html#/other

問題

請問有辦法監聽 hash 值的變化嗎?

ringa_lee
ringa_lee

ringa_lee

全部回覆(1)
学习ing

只能透過 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(); };");
    }
});
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板