suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – So überwachen Sie URL-Hash-Änderungen in der Android-Webansicht

Szene

Laden Sie eine SPA-Website (Single Page Application) in der Android-Webansicht

Prozess

Ich verwende die Methode Shouldoverrideurl, um die URL von Webview zu überwachen und eine Vorverarbeitung der URL durchzuführen

Allerdings handelt es sich bei den meisten Änderungen in SPA um Hashwertänderungen, sodass diese Methode keine Änderungen erkennen kann

Beispiel

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

Frage

Gibt es eine Möglichkeit, Änderungen in Hash-Werten zu überwachen?

ringa_leeringa_lee2716 Tage vor1848

Antworte allen(1)Ich werde antworten

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

    Antwort
    0
  • StornierenAntwort