javascript - chrome.storage.local 写入密钥的问题
问题描述
我正在尝试将 chrome 的存储集成到我的扩展中。而且我很难掌握数据写入后是如何存储的,因为我尝试的任何方法似乎都不起作用。我想要做的是存储一个带有特定键的对象。但是该密钥是在运行时动态生成的。
所以到目前为止我有这样的事情。
let storage = {};
storage["status"] = "no status";
chrome.storage.local.set(storage,function(){
});
当我这样做时,密钥会自动变为“存储”,但我不想这样做。因为我希望密钥每次都是唯一的。所以理想情况下我想做的是这个
let storageid = generateid();//generate unique storage id
let storage = {};
storage["status"] = "no status";
chrome.storage.local.set({storageid: storage},function(){
});
但即使在那种情况下,键仍然是“storageid”,不一定是变量 storageid 中保存的值。由于我对 chrome 的本地存储的工作原理知之甚少,因此解释这个问题有点棘手。因此,任何帮助将不胜感激。
解决方案
当你形成你的 JS 对象时,你正在编写{storageid: storage}
. 这里storageid
仍然只是字符串"storageid"
。您正在寻找的是变量本身的值。
{[storageid]: storage}
将变量解释storageid
为其值。
在构建 Chrome 插件时并不重要,但我认为值得指出的是,这是一种更现代的 JS 语法,在 IE 中不起作用。在那里,解决方案仍然必须存在。
var storageObj = {}
storageObj[storageid] = storage
推荐阅读
- wpf - 如何在没有数据模板的情况下在 wpf mvvm 中导航用户控件视图?
- xml - 如何在 XSL 中显示输出变量文本
- python - 如何修复一个不产生任何结果的scrapy蜘蛛
- sql - 使用 Postgres 使用多个 WITH tablename AS (...) 语句
- android - 通过 Webview 获取 url 视频响应
- java - 从 Java 获取 GET 请求参数到 Python Hug REST API
- c++ - 将字符串转换为 uint8_t 数组
- push-notification - 未在 Pubnub 上收到 GCM 通知
- sonarqube - 使用 Sonar 扫描仪为 msbuild 运行分析后,无法在 Sonarqube 服务器上获得任何分析结果
- bash - 在 find 的 {} 上应用 bash 参数扩展?