我有一个使用cache.manifest在本地缓存HTML内容的应用程序。当我使用Jquery .load()检索此内容时,不会从应用程序缓存中检索内容,并且如果设备处于脱机状态,则调用将失败。

正在加载cache.manifest中指定的文件,当我在站点中加载时,可以在charles中看到。

脱机时,我可以在浏览器中输入缓存的文件URL,它显示的很好,只是没有使用.load(),因此我确定cache.manifest可以正确加载所有内容。

我的问题是,如果设备离线,如何使用jquery或纯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");


任何帮助表示赞赏。

最佳答案

我能够做到这一点(相当混乱):

在我的应用程序中,我制作了一个隐藏的iFrame:

<div style="display:none;">
<iframe id="dummyContent"></iframe>
</div>


对此iFrame设置一个侦听器,以读取BODY并将其随时加载到我的显示元素中:

$("#dummyContent").load(function(){
    var $con = $("#dummyContent").contents().find("body");
    $("#docu").html($con);  // docu is my display div
});


为内容检索按钮设置点击处理程序,以将iFrame的src设置为我的内容:
这是从应用程序缓存按预期加载的。


$("#questionButton").click(function(ev) {
     $("#dummyContent").attr("src","/m2/docs/e5a133db912860d8ec124cce9caa78d1/M97X01.htm");
});



如果有人使用其他方法,也许不使用iFrame,我将不胜感激。该解决方案就在其中,它使用表格来对齐页面内容...

10-07 12:31
查看更多