chrome.storage.local.get 并设置

IT技术 javascript google-chrome google-chrome-extension
2021-03-03 18:38:44

我正在尝试chrome.storage.local在我的扩展程序中使用它,但它似乎不起作用。我使用过localStorage但意识到我不能在多个页面的内容脚本中使用它。

所以,这就是我想出的:

function save()
{
    var channels = $("#channels").val();
    var keywords = $("#keywords").val();

    chrome.storage.local.set({'channels': channels});
    chrome.storage.local.set({'keywords': keywords});
}

我确实相信我做save()对了,但问题出现在load()

function load()
{
    var channels = "";
    chrome.storage.local.get('channels', function(result){
        channels = result;
        alert(result);
    });

    var keywords = "";
    chrome.storage.local.get('keywords', function(result){
        keywords = result;
        alert(result);
    });

    $("#channels").val(channels);
    $("#keywords").val(keywords);
}

当警报触发时,它会打印出[object Object]. 这是为什么?我究竟做错了什么?我查看了文档/示例,但似乎无法确定问题所在。

3个回答

这段代码对我有用:

function load() {
    var channels = "";
    var keywords = "";
    chrome.storage.local.get('channels', function (result) {
        channels = result.channels;
        alert(result.channels);
        $("#channels").val(channels);
    });
} 

Chrome.storage.local.get()返回一个包含键值映射项的对象,因此您必须在搜索模式中使用键的索引。

进口商:

感谢 Rob 指出:Chrome.storage.local.get()异步的,您应该修改代码以确保它们在 callback() 成功后工作。

如果您需要更多信息,请与我们联系。

可以使用单个代码块返回所有键吗?
2021-04-24 18:38:44
最好在回调函数中声明变量而不是全局声明它们。只是说:)
2021-05-17 18:38:44

调试或使用

alert(JSON.stringify(result));

有关您返回的内容的更多详细信息

控制台。目录(结果);也会这样做。
2021-04-23 18:38:44

您使用的“结果”值是一个包含存储值的对象,要获取您必须使用result.keywords的值,它将获取关键字的值。前任:

function load(){
  chrome.storage.local.get('keywords', function(result){
    var keywords = result.keywords;
    alert(keywords);
  });

  chrome.storage.local.get('channels', function(result){
    var channels = result.channels;
    alert(channels);
  });
}
不处理keywords代码后面使用的主要问题,但在回调运行之前。
2021-04-24 18:38:44