android - android web View 中的 baseUrl 是什么?

标签 android webview

在Android WebView 的loadDataWithBaseURL 方法中,有“baseUrl”和“historyUrl”。

它们有什么用?

我已经阅读了 android 文档,但仍然不知道它们是什么。

最佳答案

使用基本 URL 将 HTML 加载到 WebView 中

如果您直接加载到 Android 网络应用的 WebView 中的 HTML 包含带有相对 URL 的链接,那么这些链接可能无法正常工作。当您将 HTML 直接加载到 WebView 时,HTML 没有可从中解释相对 URL 的基本 URL。 Android WebView 组件有一个解决方案。

您可以使用基本 URL 将 HTML 直接加载到 WebView 中。然后使用基本 URL 来解析 HTML 中的所有相对 URL。要使用基本 URL 加载 HTML,您必须使用 loadDataWithBaseURL() 方法。这是一个 WebView loadDataWithBaseURL() 示例:

String baseUrl    = "http://tutorials.jenkov.com";
String data       = "Relative Link";
String mimeType   = "text/html";
String encoding   = "UTF-8";
String historyUrl = "http://tutorials.jenkov.com/jquery/index.html";
webView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);

loadDataWithBaseURL() 方法有 5 个参数。 data 参数是要加载到 WebView 中的 HTML。 mimeType 是加载到 WebView 中的数据的 mime 类型(在本例中为 text/html)。编码是数据的二进制编码(在本例中为 UTF-8)。注意:我尝试使用 UTF-16 作为编码,但 WebView 中显示的内容看起来很奇怪(像亚洲字符)。

baseUrl 参数是基本 URL,从中解释加载的 HTML 中的所有相对 URL。

historyUrl 参数是为加载到 WebView 中的 HTML 写入 WebView 内部导航历史记录的 URL。如果用户从加载的 HTML 导航到另一个页面,然后单击“后退”按钮,那么 WebView 将导航回这个 URL。您可能必须拦截此 URL 的加载,因为返回 WebView 的历史记录不会将您带到加载的 HTML,而是转到 historyUrl 参数中指定的 URL(如果 historyUrl 设置为 null,则为 about:blank)。

有关更多信息,请浏览此 tutorial还有这个stackoverflow answer .

关于android - android web View 中的 baseUrl 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360936/

相关文章:

android - 如何将定义的单选按钮布局分配给动态单选按钮

android - 通过蓝牙在 Android 和 iPhone 之间传输文件?

android - Webview 中的 Oauth 请求

android webview 不能正确渲染子弹

objective-c - 改变 cocoa DOMElement 的innerHTML

Android Nougat 7.1 在启动 WebView 后重置 Locale

android - 使用单击事件以编程方式在android中创建按钮

Android:在文件中保存一个条目而不是更多数据

android - 如何在 Android WebView 中以全屏模式播放视频并退出全屏模式?

javascript - Android 上 HTML5 网页中的 js 包含文件数量有限