@xiaoyixy
2015-09-29T22:30:01.000000Z
字数 859
阅读 2142
Hybrid
我们使用 loadData() 方法在 WebView 中请求以字符串的形式渲染 HTML。
loadData() API:
loadData(String data, String mimeType, String encoding)
data 通过数据 URL scheme 指定将被加载的数据。使用这一技术,我们可以在单 HTTP 请求(而不是多 HTTP 请求)中加载一个单独的元素例如图片或样式表。
mineType 指定数据类型,这里是 text/html。
encoding 字段指定数据是基于64位的编码或是 URL 编码。
一个例子:
String data = "<!DOCTYPE html>";
data += "<head><title>Hello World</title></head>";
data += "<body>Welcome to the WebView</body>";
data += "</html>";
// args: data, mimeType, encoding
WebView.loadData(data, "text/html", "UTF-8");
注意:
如果想在 HTML 文档中从任一源引用文件,比如 res/drawable 目录,使用下面语句起不到效果,这是由于Javascript的同源规则限制了网页中所有资源必须源自同一个位置:
// Bad example
String data = "<!DOCTYPE html>";
data += "<head><title>THIS WILL NOT WORK</title></head>";
data += "<body><img src=\"file:///android_res/drawable/logo.png
\" /></body>";
data += "</html>";
WebView.loadData(data, "text/html", "UTF-8");
为了避免这种限制,Google 建议使用可同时解决关联的 URL 和 Javascript 同源规则的问题的 loadDataWithBaseURL() 方法。