0

JSONP エンドポイントからのデータを含めようとするまでは、キャッシュされたオフライン アプリでうまくいきました。新しい Netflix ウィジェット API から単一の映画をロードする小さな例を次に示します。

<!DOCTYPE html>
<html manifest="main.manifest">
   <head>
      <title>Testing!</title>
   </head>
   <body>
   <p>Attempting to recover a title from Netflix now...</p>
   <script type="text/javascript">
   function ping(r) { alert('API reply: ' + r.catalog_title.title.regular); }
   var cb = new Date().getTime();
   var s = document.createElement('SCRIPT');
   s.src = 'http://movi.es/7Soq?v=2.0&output=json&expand=widget&callback=ping&cacheBuster=' + cb;
   alert('SCRIPT src: ' + s.src);
   s.type = 'text/javascript';
   document.getElementsByTagName('BODY')[0].appendChild(s);
   </script>
</body>
</html>

...そしてmain.manifest、これが私のマニフェストの内容です。これにはファイルは含まれておらず、そこにあるだけなので、ブラウザーは呼び出し元の HTML ファイルをキャッシュすることを認識しています。

CACHE MANIFEST

はい、サーバーが正しいコンテンツ タイプのマニフェストを送信していることを確認しましたtext/cache-manifest

アプリは正常に動作します-つまり、両方のアラートが表示されます-最初に実行したときですが、その後の実行では、10行目でキャッシュ無効化を試みても、クエリに関係なくキャッシュからスクリプトをロードしようとしているようです文字列は。スクリプト ソースを示すアラートが表示されますが、コールバックが起動しません。

2 行目からマニフェスト リンクを削除し、ブラウザー (Safari と iPhone シミュレーター) をリセットしてキャッシュをクリアすると、毎回動作します。また、ページ内の SCRIPT タグの数を警告しようとしましたが、すべてのケースで、既存のタグと動的に作成されたタグの両方が確実に表示されています。

4

1 に答える 1

0

ああ、すべてのクレイジーな場所の仕様でそれを見つけました:

http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#concept-appcache-onlinewhitelist-wildcard

マニフェストの NETWORK: セクションにhttp://movi.es/を追加する必要がありました。完全なファイルは次のようになります。

CACHE MANIFEST

NETWORK:
http://movi.es/

...そして毎回ネットワークにヒットしているようです。

于 2009-12-16T02:48:44.763 に答える