【问题标题】:chrome.storage.local.get and set [duplicate]chrome.storage.local.get 并设置 [重复]
【发布时间】:2012-12-02 02:12:52
【问题描述】:

我正在尝试在我的扩展程序中使用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]。这是为什么?我究竟做错了什么?我查看了文档/示例,但似乎无法确定问题所在。

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension


    【解决方案1】:

    此代码适用于我:

    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()asynchronous,您应该修改您的代码以确保它们在 callback() 成功后工作。

    如果您需要更多信息,请告诉我。

    【讨论】:

    • 单个代码块能否用于返回所有键?
    • 最好在回调函数中声明变量而不是全局声明它们。只是说:)
    【解决方案2】:

    调试或使用

    alert(JSON.stringify(result));
    

    有关您将获得什么的更多详细信息

    【讨论】:

    • console.dir(result);也会这样做。
    【解决方案3】:

    您使用的“结果”值是一个包含存储值的对象,要获取您必须使用的值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的主要问​​题,但在回调运行之前。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2018-06-03
    • 2017-06-26
    • 2019-01-30
    • 1970-01-01
    • 2013-06-08
    相关资源
    最近更新 更多