1

我有一个使用 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");

任何帮助表示赞赏。

4

1 回答 1

1

我能够让它工作(相当混乱):

在我的应用程序中,我制作了一个隐藏的 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。这个解决方案就在那里,使用表格来对齐页面内容......

于 2013-03-28T09:54:04.823 回答