Возможно ли хранить данные таким образом, который будет доступен после перезапуска браузера в контексте расширения chrome?У расширения Chrome есть доступ к локальному хранилищу?
ответ
даже проще, чем:
следующим образом:
var myStoredValue = localStorage["TheKeyToMyStoredValue"];
написать:
localStorage["TheKeyToMyStoredValue"] = myNewValueToStore;
избавиться от:
delete localStorage["TheKeyToMyStoredValue"];
Да, это так. Прохождение полного прохода, как это сделать, вероятно, будет превышать длину разумного ответа 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);
}
}
Ссылка на учебное пособие сломана, но пример все еще существует. Вот пример учебника https://chrome.google.com/webstore/detail/hmbpgbeiphknbkjjfppodijapijlpkkc –
Этот API тоже неплохо работает: https://developer.chrome.com/extensions/storage.html Он также позволяет синхронизировать данные с вашим профилем –
Текущая версия хром имеет локальное хранилище.
Я сам использовал его. Вы можете использовать modernizr для определения того, поддерживает ли браузер его или нет. Я написал решение для клиента, где я делаю резервную копию файла cookie, если локальное хранилище не существует, но это не должно быть проблемой для расширений.
Ссылка мертва на 11/11/11 – techie007
Я удалил ее и обновил ответ –
Chrome также поддерживает HTML5 Web Database spec. Это дает локальную базу данных SQL, поэтому вы можете делать более сложные вещи, чем просто хранить пары имя/значение в локальном хранилище.
Сегодня, возможно, было бы лучше использовать chrome.storage. chrome.storage является асинхронным, что делает его быстрее, а localStorage ограничен 5 МБ.
«что делает его быстрее» _ \ [править] _ – Xan
Как указано [здесь] (https: // developer.chrome.com/apps/storage) от chrome devs, объемные неблокирующие операции чтения и записи выполняются быстрее, чем блокирующий и последовательный интерфейс localStorage API. – krbnr
Спасибо за ссылку! – Xan
Здесь уже есть отличные ответы, но обратите внимание, что если вы решите использовать скрипт контента в своем расширении, этот скрипт контента не будет иметь доступа к localStorage. поэтому chrome.storage - хорошая альтернатива.
Вы, сэр, друид 99-го уровня и святой. – EbilGenius
Это был лучший ответ, который я прочитал очень долго. – whizzzkid
отличный ответ. просто обратите внимание, что это не будет работать с сценариями контента. Я был смущен, пока не нашел [это] (http://stackoverflow.com/a/15466494/4926817) –