6

Android webview有2种加载数据的方法

public void loadData (String data, String mimeType, String encoding)

请注意,JavaScript 的同源策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用“数据”以外的任何方案加载的内容,包括“http(s)”。为避免此限制,请将 loadDataWithBaseURL() 与适当的基本 URL 一起使用。

public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)

请注意,只有当 baseUrl 指定除“http”、“https”、“ftp”、“ftps”、“about”或“javascript”之外的方案时,以这种方式指定的内容才能访问本地设备文件(通过“文件”方案 URL) '。

我不知道这两个句子是什么意思以及何时在两者之间进行选择?

提前致谢

4

3 回答 3

12
public void loadData (String data, String mimeType, String encoding)

在此我们传递 HTML、mimeType 和编码

还有什么地方

public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)

其中 baseUrl 可以是基本 url,例如资产文件夹的路径,或 SDCard 或任何其他路径,您的图像或其他媒体所在的位置与您的 html 相关,我不太了解 historyUrl

根据文档[loadData][1]

请注意,JavaScript 的同源策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用“数据”以外的任何方案加载的内容,包括“http(s)”。要避免此限制,请使用loadDataWithBaseURL()适当的基本 URL。

意味着loaddata将仅包括位于第一个参数中的部分。

请注意,只有当 baseUrl 指定除“http”、“https”、“ftp”、“ftps”、“about”或“javascript”之外的方案时,以这种方式指定的内容才能访问本地设备文件(通过“文件”方案 URL) '。

上面的简单含义是您可以通过传递 baseUrl 从 http 和...其他访问数据

例如,我编写的 HTML 需要来自我的 ftp 或其他地方的大量图像我要做的就是在 baseURl 参数中传递我的 ftp 的 url,我可以访问我的图像

于 2012-09-14T09:12:15.497 回答
4

当您在本地加载 HTML 时,第二个会派上用场,它会引用图片和 css 等资产,这些资产也在本地打包

于 2012-09-14T08:57:59.033 回答
1

loadDataWithBaseURL() 还带有 Unicode 支持。当您尝试加载包含非英语内容的网页时,这可能会有所帮助。

于 2016-03-03T10:41:45.350 回答