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 に答える