javascript - Android 的 webview 中怎么监听 url 的 hash 变化
问题描述
场景Android 的 webview 中加载一个 SPA (单页面应用)网站
过程我通过 shouldoverrideurl 方法来监听 Webview 的 URL,对 URL 进行某些预处理
但是,SPA 中大部分是 hash 值变化,因此这个方法就监听不到变化
举例从 a.html#/home 跳转到 a.html#/other
问题请问有什么办法监听 hash 值的变化吗?
问题解答
回答1:只能通过 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(); };'); }});
相关文章:
1. javascript - 粘贴一段带有图片和文字的内容,如何使用js实现获取图片并上传到服务器?2. PHP怎么升级?升级会导致老的网站程序不能用吗?3. javascript - c#如何向js传值4. javascript - 获取标签中的字符串5. android-studio - android app微信登录一定要申请了登录权限才能测试?6. 网页爬虫 - 关于Python的编码与解码问题7. 一道关于 JavaScript 中 this 的题目的困惑8. java - 请教一个spring定时任务的问题9. javascript - vue2如何动态生成checkbox默认选中,获取数据10. mysql优化 - mysql 分页查询优化。

网公网安备