从webWorker访问localStorage

时间:2011-05-30 17:29:46

标签: javascript html5 local-storage web-worker

WebWorker可以访问localStorage吗?

如果不是为什么不呢?从安全角度来看,这有问题吗?

4 个答案:

答案 0 :(得分:91)

网络工作者只能访问以下内容:

  • 的XMLHttpRequest
  • 应用程序缓存
  • 创建其他网络工作者
  • 导航器对象
  • 位置对象
  • setTimeout方法
  • clearTimeout方法
  • setInterval方法
  • clearInterval方法
  • importScripts方法
  • JS​​ON
  • 工人

无法从Web worker访问窗口或父对象,因此无法访问localStorage。

要在窗口和workerglobalscope之间进行通信,您可以使用postMessage()函数和onmessage事件。

访问DOM和窗口不是线程安全的,因为子线程具有与其父线程相同的权限。

答案 1 :(得分:61)

不,在Webworker进程中,localStorage和sessionStorage都是未定义的。

您必须将postMessage()调回Worker的原始代码,并将该代码存储在localStorage中。

有趣的是,网络工作者可以使用AJAX调用向服务器发送信息/从服务器检索信息,这可能会打开可能性,具体取决于您尝试做什么。

答案 2 :(得分:30)

您可以在IndexedDB中使用WebWorkers,这是一种在密钥值存储中本地存储内容的方法。它与localStorage不同,但它具有相似的用例,可以容纳大量数据。我在WebWorkers中使用IndexedDB。

答案 3 :(得分:0)

kvStorage是一个不错的选择,

2019年12月。目前尚不支持kvStorage,将来也不支持chrome。

该规范的工作目前已暂停,因为目前没有浏览器团队(包括发起该提案的Chromium项目)都表示有兴趣实施该规范。