2010-01-28 4 views

ответ

43

даже проще, чем:

следующим образом:

var myStoredValue = localStorage["TheKeyToMyStoredValue"]; 

написать:

localStorage["TheKeyToMyStoredValue"] = myNewValueToStore; 

избавиться от:

delete localStorage["TheKeyToMyStoredValue"]; 
+2

Вы, сэр, друид 99-го уровня и святой. – EbilGenius

+0

Это был лучший ответ, который я прочитал очень долго. – whizzzkid

+0

отличный ответ. просто обратите внимание, что это не будет работать с сценариями контента. Я был смущен, пока не нашел [это] (http://stackoverflow.com/a/15466494/4926817) –

21

Да, это так. Прохождение полного прохода, как это сделать, вероятно, будет превышать длину разумного ответа StackOverflow, поэтому я отнесю вас к this very extensive tutorial от Rajdeep Dua.

Соответствующий код будет выглядеть следующим образом:

// Store item in local storage: 
    function setItem(key, value) { 
    try { 
     log("Storing [" + key + ":" + value + "]"); 
     window.localStorage.removeItem(key);  // <-- Local storage! 
     window.localStorage.setItem(key, value); // <-- Local storage! 
    } catch(e) { 
     log("Error inside setItem"); 
     log(e); 
    } 
    log("Return from setItem" + key + ":" + value); 
    } 

    // Gets item from local storage with specified key. 
    function getItem(key) { 
    var value; 
    log('Retrieving key [' + key + ']'); 
    try { 
     value = window.localStorage.getItem(key); // <-- Local storage! 
    }catch(e) { 
     log("Error inside getItem() for key:" + key); 
     log(e); 
     value = "null"; 
    } 
    log("Returning value: " + value); 
    return value; 
    } 

    // Clears all key/value pairs in local storage. 
    function clearStrg() { 
    log('about to clear local storage'); 
    window.localStorage.clear(); // <-- Local storage! 
    log('cleared'); 
    } 

    function log(txt) { 
    if(logging) { 
     console.log(txt); 
    } 
    } 
+1

Ссылка на учебное пособие сломана, но пример все еще существует. Вот пример учебника https://chrome.google.com/webstore/detail/hmbpgbeiphknbkjjfppodijapijlpkkc –

+0

Этот API тоже неплохо работает: https://developer.chrome.com/extensions/storage.html Он также позволяет синхронизировать данные с вашим профилем –

5

Текущая версия хром имеет локальное хранилище.

Я сам использовал его. Вы можете использовать modernizr для определения того, поддерживает ли браузер его или нет. Я написал решение для клиента, где я делаю резервную копию файла cookie, если локальное хранилище не существует, но это не должно быть проблемой для расширений.

+0

Ссылка мертва на 11/11/11 – techie007

+1

Я удалил ее и обновил ответ –

7

Chrome также поддерживает HTML5 Web Database spec. Это дает локальную базу данных SQL, поэтому вы можете делать более сложные вещи, чем просто хранить пары имя/значение в локальном хранилище.

3

Сегодня, возможно, было бы лучше использовать chrome.storage. chrome.storage является асинхронным, что делает его быстрее, а localStorage ограничен 5 МБ.

+0

«что делает его быстрее» _ \ [править] _ – Xan

+0

Как указано [здесь] (https: // developer.chrome.com/apps/storage) от chrome devs, объемные неблокирующие операции чтения и записи выполняются быстрее, чем блокирующий и последовательный интерфейс localStorage API. – krbnr

+0

Спасибо за ссылку! – Xan

1

Здесь уже есть отличные ответы, но обратите внимание, что если вы решите использовать скрипт контента в своем расширении, этот скрипт контента не будет иметь доступа к localStorage. поэтому chrome.storage - хорошая альтернатива.