[关闭]
@xiaoyixy 2015-09-29T22:30:01.000000Z 字数 859 阅读 2142

在 WebView 中加载 HTML

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() 方法。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注