首页 > 解决方案 > 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 的本地存储的工作原理知之甚少,因此解释这个问题有点棘手。因此,任何帮助将不胜感激。

标签: javascriptgoogle-chrome-extension

解决方案


当你形成你的 JS 对象时,你正在编写{storageid: storage}. 这里storageid仍然只是字符串"storageid"。您正在寻找的是变量本身的值。 {[storageid]: storage}将变量解释storageid为其值。

在构建 Chrome 插件时并不重要,但我认为值得指出的是,这是一种更现代的 JS 语法,在 IE 中不起作用。在那里,解决方案仍然必须存在。

var storageObj = {}
storageObj[storageid] = storage

推荐阅读