chrome.storage.sync.remove数组不起作用

时间:2013-07-29 14:59:01

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

我正在制作一个小型Chrome扩展程序。我想使用chrome.storage但我无法从存储中删除多个项目(数组)。单项清除工作。

function clearNotes(symbol)
{
    var toRemove = "{";

    chrome.storage.sync.get(function(Items) {
        $.each(Items, function(index, value) {
            toRemove += "'" + index + "',";         
        });
        if (toRemove.charAt(toRemove.length - 1) == ",") {
            toRemove = toRemove.slice(0,- 1);
        }
        toRemove = "}";
        alert(toRemove);
    });

    chrome.storage.sync.remove(toRemove, function(Items) {
        alert("removed");
        chrome.storage.sync.get( function(Items) {
            $.each(Items, function(index, value) {
                alert(index);           
            });
        });
    });
}; 

似乎没有什么破坏,但是最后一个警告存储中的内容的循环仍然显示我想要删除的所有值。

1 个答案:

答案 0 :(得分:9)

当您将字符串传递给sync.remove时,Chrome会尝试删除其键与输入字符串匹配的单个项目。如果您需要删除多个项目,请使用一组键值。

此外,您应该将remove来电转移到get回调中。

function clearNotes(symbol)
{
// CHANGE: array, not a string
var toRemove = [];

chrome.storage.sync.get( function(Items) {
    $.each(Items, function(index, value)
    {
        // CHANGE: add key to array
        toRemove.push(index);         
    });

    alert(toRemove);

    // CHANGE: now inside callback
    chrome.storage.sync.remove(toRemove, function(Items) {
        alert("removed");

        chrome.storage.sync.get( function(Items) {
            $.each(Items, function(index, value)
            {
                alert(index);           
            });
        });
    }); 
});

};