我正在尝试访问共享网络工作者(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 的内容(如我所料)
- 消息“缓存:未定义”(哎呀!)
我在 Google Chrome 7.0.517.44 和 Safari 5.0.2 (Mac OS X 10.6.4) 上试过这个。我还尝试在访问缓存和许多其他变体之前触发 HTTP GET,但所有这些尝试都产生了相同的结果。
我错过了一些明显的东西吗?这是我测试过的浏览器的已知限制吗?
非常感谢,
奥里