我正在使用HTML5中的新缓存清单功能来缓存我的Web应用程序,以便它可以脱机工作.当页面加载以下html元素时,内容将自动缓存:
<html lang="en" manifest="offline.manifest">
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我想让我的用户可以选择是否要将内容缓存离线.所以,这是我的问题:
有没有办法触发应用程序在运行时使用JavaScript缓存,而不是在加载页面时自动完成.
例如,像这样的东西(使用jquery):
---------------- --------------的index.html
<head>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="Main.js"></script>
</head>
<body>
<button id="cacheButton">Cache Page</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
--------- --------- Main.js
$(document).ready(
function()
{
$('#cacheButton').click(onCacheButtonClick);
}
)
function onCacheButtonClick(event)
{
console.log("Setting Offline Manifest");
$('#htmlRoot').attr("manifest","offline.manifest");
}
Run Code Online (Sandbox Code Playgroud)
------------- ------------- offline.manifest
CACHE MANIFEST
#version .85
#root
index.html
scripts/main.js
#jquery assets
http://code.jquery.com/jquery-1.4.4.min.js
Run Code Online (Sandbox Code Playgroud)
基本上,当单击按钮时,我动态设置html元素的manifest属性.这有效(在某种意义上,元素已设置),但它不会导致浏览器缓存页面.
有什么建议?
我正在尝试使用PWA方法来实现应用程序的一部分,该方法在上可以正常使用Android,但不适用于iOS。我们需要
由于被提及这里的服务人员不中支持WKWebView(或UIWebView)。那么,是否存在模拟或替代解决方案,例如智能缓存控制?
似乎可以存储来自应用程序的某些Web内容,并能够在发生某些更改时对其进行更新。可能已经有一个framework/library/approach用于此目的的软件吗?
编辑 iOS 11.3的WKWebView中不可用的Service Workers-此问题解释了WKWebView中ServiceWorkers的状态,但没有其他选择。我想讨论任何其他解决方案。
我发现的一件事是https://github.com/xtools-at/iOS-PWA-Wrapper。看起来像是基于AppCache进行工作,但是https://developer.mozilla.org/zh-CN/docs/Web/HTML/Using_the_application_cache#Browser_compatibility表示已弃用,建议使用SW(建议不要使用SW(PWA不能选择此选项) )。