【问题标题】:Clicking on href tag inside WebView opens blank page单击 WebView 中的 href 标记会打开空白页面
【发布时间】:2022-01-20 06:46:56
【问题描述】:

我在 jetpack compose 项目中使用WebView。该项目是关于服务器驱动的 UI,其中一个组件将 String 作为 HTML 返回。里面的 HTML 包含<a href> 标签,点击它应该在默认浏览器上打开 URL 或打开。

为了处理该事件,我重写了函数shouldOverrideUrlLoading。问题是当我单击该标签时,它会在WebView 内打开一个空白页面。我在里面捕获了WebResourceRequest.url 属性,它返回about:blank#blocked。我试着在WebView 里面玩一点WebSettings,但没有帮助。还尝试捕获可能存在 ssl 证书问题的错误,但也没有找到任何解决方案。

代码如下:

AndroidView(factory = {
            WebView(context).apply {
                with(this.settings){
                    this.allowContentAccess = true
                }
                webViewClient = object : WebViewClient() {
                    override fun shouldOverrideUrlLoading(
                        view: WebView?,
                        request: WebResourceRequest?
                    ): Boolean {
                        Log.d("url0", request?.url.toString()) //returns about:blank#blocked
                        return if (url != null && (url!!.startsWith("http://") || url!!.startsWith("https://"))) {
                            //open page in browser
                            true
                        } else if (url != null && (url!!.startsWith("mailto:"))) {
                            //handle email
                            true
                        } else {
                            false
                        }
                    }
loadDataWithBaseURL(null, "<a href=\\\"https://en.wikipedia.org/wiki/Log4j\\\">This is sample data</a>.", "text/html", "UTF-8", null)

【问题讨论】:

  • 也许你禁用了javascript。使用 webView.setJavascriptEnabled(true) 启用 webView 的 javascript
  • @SagarBalyan 感谢您的回答。已经试过了,还是不行
  • 这能回答你的问题吗? WebView link click open default browser

标签: android webview android-jetpack-compose


【解决方案1】:

过了一会儿,我发现问题出在&lt;a href&gt; 标记中,这是我从端点收到的响应:

<a href=\\\"https://en.wikipedia.org/wiki/Log4j\\\">

如果你从 String 中删除转义标记,你会得到:

<a href=\"https://en.wikipedia.org/wiki/Log4j\">

这不是一种有效的格式,这就是它显示空白页的原因。

从字符串中删除 \ 解决了我的问题。

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 2017-10-30
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2017-05-12
    • 2022-09-24
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多