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")); 

但我立即得到這個錯誤:

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

它的工作原理!我正在使用catch來設置默認值。謝謝! – 2013-03-01 14:44:44

+0

我認爲最後一行應該是:「});」 – Kudlas 2014-04-11 08:54:14

+0

@Kudlas你相信是對的。謝謝。 – 2014-04-12 18:06:16

1

沒有必要使用捕獲現在(意思是我不知道是不是因爲公認的答案這個改變,現在)。

你可以在你想隨着默認的項目(S)應通過該項目不存在

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

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