搜尋

首頁  >  問答  >  主體

javascript - Android 的 webview 中怎麼監聽 url 的 hash 變化

場景

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

過程

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

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

舉例

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

問題

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

ringa_leeringa_lee2779 天前1920

全部回覆(1)我來回復

  • 学习ing

    学习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(); };");
        }
    });
    

    回覆
    0
  • 取消回覆