ApplicationCacheは共有Webワーカー(HTML5)で「未定義」です
-
29-09-2019 - |
質問
オフラインアプリケーションキャッシュにアクセスしようとしています 共有ウェブワーカー (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);
}
}
私が得ているアラートは次のとおりです。
- test.htmlの内容(私が期待したように)
- メッセージ「キャッシュ:未定義」(おっと!)
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つであると識別される関連アプリケーションキャッシュがあります。外国人としてマークされたエントリを除外して、ワーカーのグローバルな範囲を一致するものの最も適切なアプリケーションキャッシュに関連付けます。
しかし、私はそれを機能させることはできません!