这完全取决于您的 Chrome 扩展程序将做什么。window.localStorage 是 HTML5 存储。除非您在后台页面中运行它,否则它只能允许您为特定域获取和设置数据到存储中。对于注入到 DOM 中的代码也是如此,因为它将使用网页上的 localStorage。
换句话说,除非您在后台页面中使用 localStorage,否则您将无法在不同的网页之间共享数据,它独立于网页运行,因为它有一个 chrome:// URI 作为其域。
另一方面,chrome.storage.local 是为 Chrome 扩展程序和 Chrome 应用程序设计的,用于将数据存储在更集中的位置。由于普通网页无法访问它,因此每个扩展都有自己的存储空间。一种可能性是您的后台页面处理数据的设置和获取,而您的内容脚本处理修改和与网页交互。
但是,这些 API 也适用于内容脚本,我编写的两个扩展都使用从内容脚本调用的 chrome.storage.local。
例如,我构建了一个 Stack 应用程序,它会在您真正阅读它们之前保留 Stack Exchange 中的收件箱项目,称为StackInbox。由于 Stack Exchange 站点跨越数百个域,我选择了 chrome.storage.local 因为我可以保存用户的 accountId 并在所有站点中重复使用它,确保收件箱数据同步,同时还可以直接在内容脚本中使用它。
作为一个简单的测试,将一些数据放在一个域的 localStorage 中的内容脚本中,然后尝试从另一个域中提取它,您将看到数据不在那里。使用 chrome.storage.local,这不是问题。
最后,Chrome 扩展程序和 Chrome 应用程序被列入白名单,因为用户选择安装它,因此他们通常可以做比普通网站更多的事情。例如,通过在清单中指定“unlimitedStorage”权限,您可以存储远远超过 HTML5 localStorage 5MB 限制的数据。
有关详细信息,请参阅Google 关于 Chrome 存储的文档。