Я пытаюсь получить доступ к автономному кешу приложений общего веб-работника (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 (как я и ожидал)
- сообщение "cache: undefined" (упс!)
Я пробовал это в Google Chrome 7.0.517.44 и Safari 5.0.2 (Mac OS X 10.6.4). Я также пытался запустить HTTP GET перед доступом к кешу и многим другим вариантам, но все эти попытки привели к одному и тому же результату.
Я что-то упускаю из виду? Это известные ограничения браузеров, которые я тестировал?
Большое спасибо,
Ori