javascript - Android 的 webview 中怎么监听 url 的 hash 变化

查看:122
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆