如何检查是否在chrome存储上设置了变量

时间:2013-02-28 18:55:01

标签: javascript google-chrome-extension local-storage chrome-web-store google-chrome-storage

我有一个与LocalStorage合作的小片段,但我还无法使用Chrome Storage计划。

当我的应用程序启动时,我检查localStorage中的变量

var bookNarration=parseInt(localStorage.getItem("narration"));

如果该变量未定义,则意味着我的应用程序第一次打开,并且在使用“默认”声明在交换机中处理bookLanguage之后。

switch(window.bookNarration)
  {
    case 2:
        window.narrationShift = window.spanishShift;
    break;
    case 3:
        window.narrationShift = window.frenchShift;
    break;
    case 10:
        window.narrationShift = window.neutralShift;
    break;
    default:
        window.narrationShift = 0; }

要使其与Chrome存储一起使用,我可以通过以下方式更改我的代码:

var bookNarration=parseInt(chrome.storage.local.get("narration"));

但我立刻得到了这个错误:

  

调用表单get(string)与定义get(可选字符串或数组或对象键,函数回调)不匹配

我一直在寻找寻找解决方案的好几个小时,但我无法让它发挥作用。我只需要检查该值是否已定义,如果不是,我可以使用set()方法来存储我的默认值。

2 个答案:

答案 0 :(得分:10)

函数expects a callback

chrome.storage.local.get("narration", function(data)
{
    if(chrome.runtime.lastError)
    {
        /* error */

        return;
    }

    var bookNarration = parseInt(data.narration);

    switch(bookNarration)
    {
        /* ... */
    };
});

答案 1 :(得分:1)

现在没有必要使用捕获(意味着我不知道自从接受的答案以来现在是否发生了变化)。

如果项目不存在,您可以传入您想要的项目以及默认值

chrome.storage.local.get({narration: "", num: 0, books: []}, function(data)
{
    var bookNarration = parseInt(data.narration);

    switch(bookNarration)
    {
        var numBooks= data.books.length
        /* ... */
    };
});