質問

オフラインアプリケーションキャッシュにアクセスしようとしています 共有ウェブワーカー (HTML5)運がない。私は何時間もこの問題に頭を叩いてきたので、何かを逃しているに違いありません...そこにあるJavaScriptの忍者からの助けは高く評価されています!

w3c仕様 それは言う:

cache = self.applicationCache

(共有労働者で)現在の共有労働者に適用されるApplicationCacheオブジェクトを返す必要があります。

アプリのメインスクリプトから共有ワーカーを次のように生成しています。

var worker = new SharedWorker('js/test.js');
worker.port.addEventListener('message', function(e) {
    alert('got message: ' + e.data);
}, false);
worker.port.start();
worker.port.postMessage('hi there...');

そして、これが私の共有労働者のコードです(test.js):

var cache = self.applicationCache;

onconnect = function(e) {
    var port = e.ports[0];
    port.onmessage = function(e) {
        // test.html contains a <html manifest='test.manifest'> tag 
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", "test.html", false);
        xmlHttp.send(null);
        var result = xmlHttp.responseText;
        port.postMessage(result);
        port.postMessage('cache: '+ cache);
}

}

私が得ているアラートは次のとおりです。

  1. test.htmlの内容(私が期待したように)
  2. メッセージ「キャッシュ:未定義」(おっと!)

Google Chrome 7.0.517.44およびSafari 5.0.2(Mac OS X 10.6.4)でこれを試しました。また、キャッシュや他の多くのバリエーションにアクセスする前に、HTTP Getをトリガーしようとしましたが、これらの試みはすべて同じ結果をもたらしました。

明白なものが足りないのですか?これは私がテストしたブラウザの既知の制限ですか?

どうもありがとう、

オリ

役に立ちましたか?

解決

私は同じことを見つけました - 正直に言うと、なぜApplicationCacheオブジェクトにアクセスしたいのかさえわかりません...私はそれがただのキャッシュをしたと思いましたか?!とにかく - 私がそれを機能させようとしていたとき、私はそれについて話しているこのスレッドを見つけました:

http://lists.w3.org/archives/public/public-webapps/2009octdec/0519.html

ワーカーファイルを参照しているメインページのマニフェストファイルに固執して入力して、アプリケーションキャッシュに魔法のように入力できると思いました。しかし、それは見えませんでした(私はあなたのように未定義になりました)。

W3C仕様では、処理モデルセクションで次のように書かれています。

ワーカーのグローバルスコープが実際に共有ワークのgerglobalscopeオブジェクトである場合(つまり、ワーカーは共有労働者です)、およびURLと同じ起源を持つマニフェストURLによって識別され、URLがエントリの1つであると識別される関連アプリケーションキャッシュがあります。外国人としてマークされたエントリを除外して、ワーカーのグローバルな範囲を一致するものの最も適切なアプリケーションキャッシュに関連付けます。

しかし、私はそれを機能させることはできません!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top