Android Webview和history.pushState有什么关系?

5
Android Webview允许Android应用程序通过在webview中打开目标来处理用户点击链接,而不是在外部浏览器中打开它。
然后可以维护这些页面加载的历史记录,以便用户可以在webview内前进和后退,就像“真实”的浏览器一样: http://developer.android.com/guide/webapps/webview.html#NavigatingHistory 我的问题是:
- Android webview历史记录管理是否可以“本地”处理网页使用类似window.history.pushState的方式推送到历史堆栈中? - 如果可以,使用哪些数据结构/API来管理历史记录?Webview如何区分具有相同URL但不同DOM状态的两个页面版本? - 如果不行,应用程序开发人员可以实现这样的支持吗? - Webview支持哪些HTML5 API(如果有)?

你有找到答案吗? - Andrew
1个回答

0

要处理此API,您可以在WebViewClient中覆盖doUpdateVisitedHistory方法。例如,使用Kotlin

val webView = findViewById(R.id.…)
webView.webViewClient = object : WebViewClient() {
    override fun doUpdateVisitedHistory(view: WebView?, url: String?, isReload: Boolean) {
        // for example, we want to change icon in toolbar when we can go back
        if (view?.canGoBack() == true)
            toolbar.navigationIcon = context.getDrawable(R.drawable.back)
        } else {
            toolbar.navigationIcon = context.getDrawable(R.drawable.close)
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接