運が悪かったので、共有Webworker(HTML5)のオフラインアプリケーションキャッシュにアクセスしようとしています。私は何時間もこの問題に頭を悩ませてきたので、何かが足りないに違いありません...そこにあるJavaScript Ninjaの助けをいただければ幸いです!
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の内容(予想通り)
- メッセージ「cache:undefined」(おっと!)
これをGoogleChrome7.0.517.44とSafari5.0.2(Mac OS X 10.6.4)で試しました。また、キャッシュや他の多くのバリエーションにアクセスする前にHTTP GETをトリガーしようとしましたが、これらの試みはすべて同じ結果になりました。
明らかな何かが欠けていますか?これは私がテストしたブラウザの既知の制限ですか?
どうもありがとう、
オリ