我有一个使用cache.manifest在本地缓存HTML内容的应用程序。当我使用Jquery .load()检索此内容时,不会从应用程序缓存中检索内容,如果设备处于脱机状态,则调用将失败。
正在加载cache.manifest中指定的文件,当我在网站中加载时,我可以在charles中看到它。
离线时,我可以在浏览器中输入缓存的文件URL,它显示它很好,只是不使用.load(),所以我确信cache.manifest正确加载所有内容。
我的问题是,如何使用jquery或plain JS加载HTML页面,并确保在设备脱机时使用应用程序缓存?
CACHE MANIFEST
/m2/docs/e5a133db912860d8ec124cce9caa78d1/Q00X03.htm
/m2/docs/e5a133db912860d8ec124cce9caa78d1/M00X03.htm
/m2/docs/e5a133db912860d8ec124cce9caa78d1/Q97X01.htm
/m2/docs/e5a133db912860d8ec124cce9caa78d1/M97X01.htm
/m2/style.css
/m2/docs/e5a133db912860d8ec124cce9caa78d1/index.htm
/m2/docs/e5a133db912860d8ec124cce9caa78d1/doc.json
然后这样打电话:
$("#docu").load("/m2/docs/e5a133db912860d8ec124cce9caa78d1/M97X01.htm");
感谢任何帮助。
答案 0 :(得分:1)
我能够让它工作(相当凌乱):
在我的应用程序中,我创建了一个隐藏的iFrame:
<div style="display:none;">
<iframe id="dummyContent"></iframe>
</div>
为此iFrame设置一个侦听器以读取BODY并在加载时将其插入我的display元素:
$("#dummyContent").load(function(){
var $con = $("#dummyContent").contents().find("body");
$("#docu").html($con); // docu is my display div
});
为内容检索按钮设置点击处理程序,将iFrame的src设置为我的内容: THIS按预期从应用程序缓存中加载。
$("#questionButton").click(function(ev) { $("#dummyContent").attr("src","/m2/docs/e5a133db912860d8ec124cce9caa78d1/M97X01.htm"); });
如果有人有不同的方法,也许不使用iFrame,我将不胜感激。这个解决方案就在那里,使用表来对齐页面内容......