7

Tôi có một đoạn mã nhỏ hoạt động với LocalStorage nhưng tôi không thể làm cho biến đó hoạt động trên lược đồ Bộ nhớ Chrome.Cách kiểm tra xem biến có được đặt trên bộ nhớ chrome

Khi ứng dụng của tôi bắt đầu tôi kiểm tra một biến trong localStorage

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

Nếu biến đó là không xác định, nó có nghĩa là ứng dụng của tôi đã được mở lần đầu tiên và tôi sau khi xử lý bookLanguage trong một chuyển đổi bằng cách sử dụng " mặc định "khai báo.

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

Để làm cho nó hoạt động với Chrome lưu trữ để thay đổi mã của tôi trên con đường này:

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

Nhưng tôi ngay lập tức nhận được lỗi này:

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

Tôi đã được tìm kiếm nhiều giờ cố gắng tìm một giải pháp nhưng tôi không thể làm cho nó hoạt động được. Tôi điều rằng tôi chỉ cần kiểm tra nếu giá trị đã được xác định vì vậy nếu nó không phải là, tôi có thể sử dụng phương thức set() để lưu trữ giá trị mặc định của tôi.

Trả lời

8

Chức năng expects a callback:

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

     return; 
    } 

    var bookNarration = parseInt(data.narration); 

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

Nó hoạt động! Tôi đang sử dụng lệnh bắt để thiết lập các giá trị mặc định. Cảm ơn bạn! –

+0

Tôi tin rằng dòng cuối cùng nên là: "});" – Kudlas

+0

@Kudlas Bạn tin đúng. Cảm ơn. –

1

Không có nhu cầu sử dụng đánh bắt tại (có nghĩa là tôi không biết nếu điều này đã thay đổi kể từ khi câu trả lời chấp nhận và bây giờ).

Bạn có thể vượt qua trong mục (s) bạn muốn cùng với giá trị mặc định nên mục không tồn tại

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

    switch(bookNarration) 
    { 
     var numBooks= data.books.length 
     /* ... */ 
    }; 
}); 
Các vấn đề liên quan