7

我有一个使用 LocalStorage 的小片段,但我还不能让它在 Chrome 存储方案上运行。

当我的应用程序启动时,我检查 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() 方法来存储我的默认值。

4

2 回答 2

10

该函数需要一个回调

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

        return;
    }

    var bookNarration = parseInt(data.narration);

    switch(bookNarration)
    {
        /* ... */
    };
});
于 2013-02-28T18:58:45.143 回答
1

现在不需要使用 catch (这意味着我不知道自从接受的答案和现在这是否发生了变化)。

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

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

    switch(bookNarration)
    {
        var numBooks= data.books.length
        /* ... */
    };
});
于 2017-11-06T07:58:12.897 回答