【问题标题】:Should there be any difference between window.localStorage.setItem and localStorage.setItem?window.localStorage.setItem 和 localStorage.setItem 之间应该有什么区别吗?
【发布时间】:2013-06-13 00:18:02
【问题描述】:

我有一个 Chrome 扩展程序,它非常适合 Mac 和 Linux 用户,但不适用于 Windows 用户。当我进入控制台并在 localStorage 中设置项目时,它可以正常工作,但是当用户尝试使用扩展程序时,并没有通过我的实际代码在 localStorage 中设置项目。

我目前的假设是使用window.localStorage可能可以让它工作,但我没有数据支持它。

这里的任何人都可以添加颜色,说明为什么这可能有效或无效?

【问题讨论】:

  • extensions下的localStorage可能仍然链接到域。 (我使用 TamperMonkey 来制作我的 Chrome 扩展程序,它的运行方式不同......但你可以查看 TamperMonkey 源代码来了解它们是如何做到的。

标签: javascript google-chrome google-chrome-extension local-storage google-chrome-devtools


【解决方案1】:

如果扩展的全局上下文不是window 对象与普通的Javascipt 应用程序相反,那么您将需要引用它。

您还可以缓存它以节省一些树遍历:

if (typeof localStorage === 'undefined' && window.localStorage)
    localStorage = window.localStorage;

现在您应该可以使用相同的代码而无需前缀。

(我相信 Chrome 扩展程序有一个单独但类似的存储机制)。

这可能也很有趣:
https://developer.chrome.com/extensions/storage.html

【讨论】:

  • if (!localStorage 未定义会失败
猜你喜欢
  • 2013-09-13
  • 2017-04-05
  • 2014-09-18
  • 2015-06-14
  • 2011-05-23
  • 2011-02-15
  • 2011-11-27
  • 2022-01-18
  • 1970-01-01
相关资源
最近更新 更多