javascript - Android 的 webview 中怎么监听 url 的 hash 变化
本文介绍了javascript - Android 的 webview 中怎么监听 url 的 hash 变化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
场景
Android 的 webview 中加载一个 SPA (单页面应用)网站
过程
我通过 shouldoverrideurl 方法来监听 Webview 的 URL,对 URL 进行某些预处理
但是,SPA 中大部分是 hash 值变化,因此这个方法就监听不到变化
举例
从 a.html#/home
跳转到 a.html#/other
问题
请问有什么办法监听 hash 值的变化吗?
解决方案
只能通过 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(); };");
}
});
这篇关于javascript - Android 的 webview 中怎么监听 url 的 hash 变化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文