7

Ho un piccolo frammento di lavoro con LocalStorage ma non riesco ancora a farlo funzionare sullo schema di archiviazione di Chrome.Come verificare se una variabile è impostata su Chrome Storage

Quando la mia applicazione si avvia a verificare una variabile in localStorage

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

Se questa variabile non è definita, significa che la mia app è stato aperto per la prima volta e io dopo gestire bookLanguage in uno switch utilizzando il " predefinito "dichiarazione.

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

Per farlo funzionare con Chrome bagagli a cambiare il mio codice su questo modo:

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

Ma ho subito ottengo questo errore:

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

ho cercato per molte ore cercando di trovare una soluzione ma non riesco a farlo funzionare. Io cosa che ho solo bisogno di controllare se il valore è già definito quindi se non lo è, potrei usare il metodo set() per memorizzare il mio valore predefinito.

risposta

8

La funzione expects a callback:

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

     return; 
    } 

    var bookNarration = parseInt(data.narration); 

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

Funziona! Sto usando il fermo per impostare i valori predefiniti. Grazie! –

+0

Credo che l'ultima riga dovrebbe essere: "});" – Kudlas

+0

@Kudlas Tu credi correttamente. Grazie. –

1

Non c'è bisogno di usare il fermo ora (nel senso che non so se questo è cambiato da quando la risposta accettata e ora).

È possibile passare alla voce (s) che si desidera insieme con le impostazioni predefinite se l'articolo non esiste

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

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