Heim > Fragen und Antworten > Hauptteil
Laden Sie eine SPA-Website (Single Page Application) in der Android-Webansicht
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
Von a.html#/home
跳转到 a.html#/other
Gibt es eine Möglichkeit, Änderungen in Hash-Werten zu überwachen?
学习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(); };");
}
});