无法保存在Chrome存储中

时间:2013-12-02 21:04:48

标签: google-chrome-extension google-chrome-storage

我使用以下代码在chrome.storage中加载和保存值:

$(document).ready(function() 
{
    $( "#filterPlus" ).click(function() 
    {
        SaveSwitch("plus1","#filterPlus","plus1");
    });
}
function SaveSwitch(propertyName, imageId, imageSrc) 
{
    chrome.storage.sync.get(propertyName, function (result) {
        var oldValue = result.propertyName;
        alert('GET:old='+oldValue);  
        if (oldValue==null) 
        {
            oldValue=false;
        }
        var newValue=!oldValue;

        chrome.storage.sync.set({propertyName: newValue}, function() 
        {
            alert('SET:'+newValue);

        });

    });  
}

当我运行此方法时,第一个提醒显示:GET:old=undefined,第二个提醒显示:SET:true就像预期一样。但是,当使用相同的参数再次调用该方法时,第一个警告AGAIN会显示GET:old=undefined而不是{预期的GET:old=true

当我使用storage.local而不是storage.sync

时,这是相同的行为

“storage”在清单的权限中。从我的扩展的选项页面调用JS -

1 个答案:

答案 0 :(得分:2)

您正在执行.get("plus1", ...),然后执行.set({"propertyName": newValue}, ...)。您存储在密钥" propertyName"但是获取了从未设置的密钥" plus1&#34 ;.

也许你的误解是对象文字中的键本身是文字的(即使没有引用),而不是变量标识符。在这种情况下,您可能会从阅读How to use chrome.storage in a chrome extension using a variable's value as the key name?中获益。