android webview中出现显示{{xxx}}问题
时间: 2023-11-01 14:59:29 浏览: 83
webview问题
5星 · 资源好评率100%
这个问题可能是因为在 WebView 中加载的页面中包含了 Mustache 模板语法,而 WebView 默认不支持 Mustache 模板语法。解决这个问题可以采取以下两种方法:
1. 使用 WebView 的 loadDataWithBaseURL() 方法来加载页面,同时在 loadDataWithBaseURL() 方法中指定 MIME 类型为 "text/html" 和字符编码为 "UTF-8",例如:
```
String html = "<html><body>{{name}}</body></html>";
webView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
```
这样就可以在 WebView 中正常显示 Mustache 模板语法了。
2. 在 WebView 中启用 JavaScript,并使用 JavaScript 渲染 Mustache 模板。具体方法是在 WebView 中启用 JavaScript,然后使用 JavaScript 调用 Mustache 渲染模板,并将渲染结果赋值给 WebView 中的 DOM 元素。例如:
```
webView.getSettings().setJavaScriptEnabled(true);
String html = "<html><body><span id='name'></span></body></html>";
webView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String name = "John";
String js = "var data = {name: \"" + name + "\"};\n" +
"var template = \"{{name}}\";\n" +
"var rendered = Mustache.render(template, data);\n" +
"document.getElementById('name').innerHTML = rendered;";
view.evaluateJavascript(js, null);
}
});
```
这样就可以在 WebView 中正常显示 Mustache 模板语法了。需要注意的是,这种方法需要在 WebView 中加载完页面后再执行渲染操作,否则会出现渲染不成功的情况。
阅读全文