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