Chrome 扩展可以利用客户端存储吗
Can a Chrome extension utilize client storage
我有一个 Google Chrome 扩展需要检查 url 客户端正在查看什么以确定某些行为,但行为因 url.
它的变化方式使得最有用的数据结构类型类似于以 urls 作为主键的数据库。
是否可以为此使用客户端存储?我只想在浏览器本身加载时加载数据库,这样扩展程序就可以从那里获取信息,而不必在事件页面中加载巨大的 DS。
我认为这是可能的,但我正在阅读的关于客户端存储的资料说它是根据 url 分配的。
那么,我的 Google Chrome 扩展是否可以使用客户端存储,如果可以,如何使用?
你有很多选择。
旧 localStorage
绑定到 origin,而不是 URL。对于扩展程序的内部页面,例如背景页面,它将始终为 chrome-extension://<your-id-here>/
。内容脚本不是这种情况,但您可以使用背景页面作为 "server" 用于数据存储 Messaging。
更好的选择是 chrome.storage
API。它为扩展脚本和内容脚本提供对相同存储的访问。
这两个选项都是键值存储。如果你需要一个合适的数据库,你有更多的选择。
明显的一个是IndexedDB。我想它也绑定到域,所以你的后台页面应该再次进行存储访问,并且内容脚本(如果有的话)必须向它发送消息。
另一个解决方案是 WebDatabase,该规范不再处于标准轨道,但 Chrome 可能暂时不会放弃对它的支持。同源
一种稍微更奇特的方法是使用 HTML FileSystem 托管您想要的任何数据库 - 例如SQLite。同样,这是一个非跨浏览器的解决方案,但 Chrome 可能会继续支持它。
我有一个 Google Chrome 扩展需要检查 url 客户端正在查看什么以确定某些行为,但行为因 url.
它的变化方式使得最有用的数据结构类型类似于以 urls 作为主键的数据库。
是否可以为此使用客户端存储?我只想在浏览器本身加载时加载数据库,这样扩展程序就可以从那里获取信息,而不必在事件页面中加载巨大的 DS。
我认为这是可能的,但我正在阅读的关于客户端存储的资料说它是根据 url 分配的。
那么,我的 Google Chrome 扩展是否可以使用客户端存储,如果可以,如何使用?
你有很多选择。
旧 localStorage
绑定到 origin,而不是 URL。对于扩展程序的内部页面,例如背景页面,它将始终为 chrome-extension://<your-id-here>/
。内容脚本不是这种情况,但您可以使用背景页面作为 "server" 用于数据存储 Messaging。
更好的选择是 chrome.storage
API。它为扩展脚本和内容脚本提供对相同存储的访问。
这两个选项都是键值存储。如果你需要一个合适的数据库,你有更多的选择。
明显的一个是IndexedDB。我想它也绑定到域,所以你的后台页面应该再次进行存储访问,并且内容脚本(如果有的话)必须向它发送消息。
另一个解决方案是 WebDatabase,该规范不再处于标准轨道,但 Chrome 可能暂时不会放弃对它的支持。同源
一种稍微更奇特的方法是使用 HTML FileSystem 托管您想要的任何数据库 - 例如SQLite。同样,这是一个非跨浏览器的解决方案,但 Chrome 可能会继续支持它。