javascript - applicationCache 在共享 webworker (HTML5) 中是 'undefined'

标签 javascript caching html offline worker

我正在尝试访问 shared webworker 的离线应用程序缓存(HTML5) 没有运气。几个小时以来,我一直在努力解决这个问题,所以我一定遗漏了一些东西……非常感谢 JavaScript Ninja 的任何帮助!

The W3C the spec说:

cache = self.applicationCache

(在共享 worker 中)应该返回适​​用于当前共享 worker 的 ApplicationCache 对象。

我正在通过我的应用程序的主脚本生成一个共享 worker :

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...');

这是我的共享 worker (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

我假设我可以在引用工作文件的主页的 cache.manifest 文件中粘贴并输入,它会神奇地填充 applicationCache。但它似乎没有(我只是像你一样未定义)。

在 w3c 规范中,在处理模型部分它说:

如果 worker 全局范围实际上是一个 SharedWorkerGlobalScope 对象(即 worker 是一个共享的 worker),并且有任何相关的应用程序缓存由与 url 具有相同来源的 list URL 标识并且将 url 作为它们的其中之一条目,不排除标记为外部的条目,然后将工作人员全局范围与匹配的最合适的应用程序缓存相关联。

但是我不能让它工作!

关于javascript - applicationCache 在共享 webworker (HTML5) 中是 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122769/

相关文章:

javascript - 使用 jQuery 检查链接是否仍然有效

javascript - 如何在javascript中正确获取json数据

html - CSS缓存问题

javascript - 跨页面缓存客户端代码结果

html - 如何在android中准确地使用链接标签中的href属性?

html - 折叠菜单中的一行社交图标

javascript - 默认选项卡导航在 Mozilla 中不起作用

javascript - 如何使用相对于父元素而不是文档的 document.elementFromPoint() ?

javascript - 我如何将服务响应数据放入 md 对话框 angularjs?

ios - 缓存下载的数据