7

Mam mały fragment współpracujący z LocalStorage, ale nie mogę jeszcze działać na schemacie Chrome.Jak sprawdzić, czy zmienna jest ustawiona w pamięci masowej Chrome

Kiedy moja aplikacja sprawdzić zmienną w localStorage

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

Jeśli ta zmienna nie jest zdefiniowana zaczyna, to znaczy, że moja aplikacja została otwarta po raz pierwszy i po obsłużyć bookLanguage w przełączniku za pomocą " domyślna "deklaracja.

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

Aby pracować z Chrome Storage mogę zmienić kod w ten sposób:

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

Ale od razu dostać ten błąd:

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

I zostały poszukiwania przez wiele godzin próbując znaleźć rozwiązanie, ale nie mogę sprawić, żeby działało. Chodzi mi o to, że wystarczy sprawdzić, czy wartość jest już zdefiniowana, więc jeśli nie jest, mógłbym użyć metody set() do przechowywania mojej wartości domyślnej.

Odpowiedz

8

Funkcja expects a callback:

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

     return; 
    } 

    var bookNarration = parseInt(data.narration); 

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

to działa! Używam catch do ustawienia wartości domyślnych. Dziękuję Ci! –

+0

Wierzę, że ostatnia linia powinna brzmieć: "});" – Kudlas

+0

@Kudlas Wierzysz poprawnie. Dzięki. –

1

Nie ma potrzeby korzystania z połów teraz (co oznacza, że ​​nie wiem, czy to się zmieniło od przyjętego odpowiedzi i teraz).

można przekazać w punkcie (i), który chcesz wraz z domyślnych należy element nie istnieje

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

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