84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
Android 的 webview 中加载一个 SPA (单页面应用)网站
我通过 shouldoverrideurl 方法来监听 Webview 的 URL,对 URL 进行某些预处理
但是,SPA 中大部分是 hash 值变化,因此这个方法就监听不到变化
从a.html#/home跳转到a.html#/other
a.html#/home
a.html#/other
请问有什么办法监听 hash 值的变化吗?
ringa_lee
只能通过 HTML5 新增加的window.onhashchange()API。shouldoverrideurl应该监听不到吧。
window.onhashchange()
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(); };"); } });
只能通过 HTML5 新增加的
window.onhashchange()
API。shouldoverrideurl
应该监听不到吧。如果你不想修改 js 代码,可以在 java 中注入:
定义一个处理 js 的类:
注入到 webview 中:
监听 onhashchange 事件: