Android webview 在“#”字符后啥也不渲染

Posted

技术标签:

【中文标题】Android webview 在“#”字符后啥也不渲染【英文标题】:Android webview rendering nothing after "#" characterAndroid webview 在“#”字符后什么也不渲染 【发布时间】:2019-06-30 05:04:41 【问题描述】:

我有一个 android 应用程序,我需要在我的自定义网站上显示一个 webview。我的问题是 webview 什么都不渲染。使用“元素检查器”后,我可以看到在第一个“#”之后显示了任何 html。例如,如果我的网站是:


<!DOCTYPE html>
<html lang="en">
    <head>
        <title>a</title>
        <style>
            html 
                color: #ff0000;
            
        </style>

    </head>

    <body>
        <h1>My awesome title</h1>
    </body>
</html>

webview 上呈现的 HTML 将是:


<!DOCTYPE html>
<html lang="en">
    <head>
        <title>a</title>
        <style>
            html 
                color: 
    <body>
    </body>
</html>

我可以使用rgb 颜色。但我想知道这里发生了什么。另一个澄清我的问题的例子是:


<!DOCTYPE html>
<html lang="en">
    <head>
        <title>a</title>
        <style>
            html 
                color: rgb(255, 0, 0);
            
        </style>

    </head>

    <body>
        <h1>My awesome #title</h1>
        <p>this won't be displayed</p>
    </body>
</html>

webview 上呈现的 HTML 将是:


<!DOCTYPE html>
<html lang="en">
    <head>
        <title>a</title>
        <style>
            html 
                color: rgb(255, 0, 0);
            
        </style>

    </head>

    <body>
        <h1>My awesome </h1>
    </body>
</html>

感谢您的帮助

【问题讨论】:

似乎有 webview 设置的东西你使用的是本机 webview,AdvancedWebview 可能会有所帮助:github.com/delight-im/Android-AdvancedWebView 【参考方案1】:

我的解决方案是将 # 替换为 %23。

1 月 30 日 Chrome 72 更新引入了对 web 视图的此更改。

这个拉取请求似乎是 webview 在 #:https://chromium-review.googlesource.com/c/chromium/src/+/1297172 之后被破坏的原因。

【讨论】:

我认为更好的方法是将传递给 webview 的 HTML 编码为 base64,如果您使用其他特殊字符,这将避免未来的错误

以上是关于Android webview 在“#”字符后啥也不渲染的主要内容,如果未能解决你的问题,请参考以下文章

在 vue 3 中获取会停止后端,并且在一次正常工作后啥也不做

jdk环境变量已经配置好了 但是cmd运行java -version后啥也不出来?

Vmware 建立虚拟机后,虚拟机打不开!打开后啥也没有! 怎么回事?

求解:Android逆向-AndroidKiller-反编译软件后啥都没改回编就失败。。。

Android:如何在 WebView 中加载 html 字符串?

当数据大小增加到超过 5100 个字符时,Android WebView 不显示