javascript - Android 的 webview 中怎么监听 url 的 hash 变化
ringa_lee
ringa_lee 2017-06-12 09:25:05
0
1
1766

场景

Android 的 webview 中加载一个 SPA (单页面应用)网站

过程

我通过 shouldoverrideurl 方法来监听 Webview 的 URL,对 URL 进行某些预处理

但是,SPA 中大部分是 hash 值变化,因此这个方法就监听不到变化

举例

a.html#/home跳转到a.html#/other

问题

请问有什么办法监听 hash 值的变化吗?

ringa_lee
ringa_lee

ringa_lee

全部回复 (1)
学习ing

只能通过 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(); };"); } });
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!