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; } 

それは私がこのように私のコードを変更クローム保管して動作させるために:

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

しかし、私はすぐにこのエラーが出る:

Invocation of form get(string) doesn't match definition get(optional string or array or object keys, function callback)

私は多くの時間を探してきました解決策を見つけようとしていますが、私はそれを機能させることはできません。私は値が既に定義されているかどうかを確認するだけでいいので、そうでなければset()メソッドを使ってデフォルト値を保存することができます。

答えて

8

機能expects a callback

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

     return; 
    } 

    var bookNarration = parseInt(data.narration); 

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

それは作品を存在してはいけませんあなたはデフォルト値と一緒にあなたがしたい項目(複数可)に渡すことができます!私はキャッチを使ってデフォルト値を設定しています。ありがとうございました! –

+0

最後の行は次のようにする必要があります: "});" – Kudlas

+0

@クドラスあなたは正しく信じています。ありがとう。 –

1

(これは受け入れ答えとなりましたので、変更された場合、私は知らないという意味)今キャッチを使用する必要はありません。

項目が

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

    switch(bookNarration) 
    { 
     var numBooks= data.books.length 
     /* ... */ 
    }; 
}); 
関連する問題