gpt4 book ai didi

java - Webview AppCache 不加载源非 html 内容

转载 作者:太空狗 更新时间:2023-10-29 14:27:07 26 4
gpt4 key购买 nike

我正在使用 HTML5 AppCache 创建一个可以离线运行的 Android 网络应用程序。使用 loadDataWithBaseURL() 将包含附加图像、样式表、javascript 和 iframe 的 HTML 加载到 WebView 中。不幸的是,当设备处于离线状态时,只有 iframe 中的 HTML 会从 AppCache 加载。

此时,我知道:

  • 此内容确实存在于 AppCache 中,因为我使用 adb shell 转储了 AppCache.db 文件的内容并在其中找到了所有内容。
  • 这可能不是域问题,因为我在 loadDataWithBaseURL() 的 baseUrl 字段中指定了正确的路径。此外,此问题的解决方法成功且没有域错误,如下所述。

下面是一些演示代码:

public class ExampleActivity extends Activity {

...

// HTML to be inserted into the Webview with loadDataWithBaseURL()
public static final String ALL_HTML =
"<!DOCTYPE HTML><html>" +
"<head><script src='sourced_js.js' " +
"onload='console.log(\"sourced_js.js onload\");'>" +
"</script>" +
"<link rel='stylesheet' href='style.css' />" + // doesn't load offline
"</head><body>" +
"<iframe src='manifest.html'></iframe>" + // loads
"<img src='android.jpg' />" + // doesn't load
"<img src='android.gif' />" + // doesn't load
"</body></html>";

public void onCreate(Bundle savedInstanceState) {

...

WebView webView = new WebView(context);
webView.clearCache(true);

WebSettings settings = webView.getSettings();
settings.setAppCacheEnabled(true);
settings.setJavaScriptEnabled(true);

webView.loadDataWithBaseURL("http://my.website.com/path/to/content/",
ALL_HTML, "text/html", "utf-8", null);
}
}

manifest.html只负责引用 list 。看起来像:

<html manifest="manifest.appcache">
<head></head>
<body></body>
</html>

manifest.appcache看起来像:

CACHE MANIFEST

# Explicitly cached resources
# manifest.html automatically cached
sourced_js.js
android.jpg
android.gif
style.css

NETWORK:
*

在线时,所有内容都会加载。离线时,只有带有 manifest.html 的 iframe负载。图像、样式表和 javascript 未加载。

奇怪的是,如果我在 sourced_js.js 中获取完全相同的静态内容( android.jpg , manifest.html , ...) ,当设备处于离线状态时,它们都会从 iframe 中的 AppCache 正确加载!就好像这些其他资源必须从静态页面中二次获取一样。

为什么不能从 AppCache 加载此内容的任何线索?

最佳答案

根据规范,如果您没有为 Web 服务器中的 *.appcache 文件设置正确的 MIME 类型响应设置(text/cache-manifest),appcache 将无法工作。

在桌面浏览器、移动浏览器和 iOS UIWebView 中预计会有相同的行为。

关于java - Webview AppCache 不加载源非 html 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11217078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com