LMLPHP后院

Android WebView 使用 loadData 无法渲染怎么办技术

maybe yes 发表于 2022-08-29 19:07

对于在安卓上使用 WebView 渲染网页遇到的一些问题。

Android WebView 的 loadData方法注意事项
loadData() 中的 html data 中不能包含 '#', '%', '\', '?' 四中特殊字符,出现这种字符就会出现解析错误,显示找不到网页还有部分 html 代码。需要如何处理呢?我们需要用 UrlEncoder 编码为 %23, %25, %27, %3f 。

可以使用以下两种代码,data 为 string 类型的 html 代码

1     webView.loadData(URLEncoder.encode(data, "utf-8"), "text/html",  "utf-8");

这样一些背景效果什么的都不怎么好看了。不推荐。只显示文字,渲染百度首页,还出现很多 + 号 和文字。

2     webView.loadDataWithBaseURL(null,data, "text/html",  "utf-8", null);
这样就会完美解析了。 

最开始使用 loadData 方法的时候,因为没有认真想,你只要一想,就会发现问题,因为网页的渲染必须基于 域。如果没有 域 网页无法执行,所以会出现大量的不解析的问题。

所以,正确的方式肯定是 loadDataWithBaseURL。

2022-12-01 18:50:58 1669891858 0.010667