javascript - chrome.storage.local 写入 key 的问题

标签 javascript google-chrome-extension

我正在尝试将 Chrome 的存储集成到我的扩展中。而且我很难掌握数据写入后的存储方式,因为我尝试的任何方法似乎都不起作用。 我想要做的是用特定的键存储一个对象。但该 key 是在运行时动态生成的。

所以到目前为止我有类似的东西。

 let storage = {};
storage["status"] = "no status";
chrome.storage.local.set(storage,function(){

});

当我这样做时,键会自动变成“存储”,但我不想这样做。因为我希望 key 每次都是唯一的。所以理想情况下我想做的是这个

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

关于javascript - chrome.storage.local 写入 key 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56368041/

相关文章:

google-chrome-extension - 将 Chrome 扩展程序从 list v1 更改为 v2 时出现端口错误

javascript - 从 Chrome 扩展发送 AJAX

javascript - 如何让我的 Grafana iframe 加载得更快?

javascript - 如果工具提示模板为空,如何在Angular2中禁用NgbTooltip?

javascript - Chrome 扩展程序中的触发快捷方式

javascript - Javascript 中的异步 YouTube API 调用

javascript - 内容脚本与 bg 页面通信 [同步]

javascript - 如何在javascript中分割一个大整数

javascript - 使用 jQuery 从下拉列表中选择后清除其余的 DIV

javascript - 让其他绑定(bind)的元素事件先触发?