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 在“#”字符后啥也不渲染的主要内容,如果未能解决你的问题,请参考以下文章