Pergunta

É possível armazenar dados de uma maneira que seja acessível após o reinício do navegador no contexto de uma extensão do Chrome?

Foi útil?

Solução

Ainda mais simples do que isso:

Ler:

    var myStoredValue = localStorage["TheKeyToMyStoredValue"];

Escrever:

    localStorage["TheKeyToMyStoredValue"] = myNewValueToStore;

Se livrar:

    delete localStorage["TheKeyToMyStoredValue"];

Outras dicas

É sim. Passando por um passo a passo completo de como fazer isso provavelmente excederia a duração de uma resposta razoável do StackOverflow, então eu vou me referir a Este tutorial muito extenso por Rajdeep Dua.

O código relevante ficaria assim:

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

O Chrome também suporta o HTML5 Banco de dados da web espec. Isso fornece um banco de dados SQL local, para que você possa fazer coisas mais complexas do que simplesmente armazenar pares de nome/valor no armazenamento local.

A versão atual do Chrome possui armazenamento local.

Eu mesmo usei. Você pode usar o Modernizr para detectar se o navegador suporta ou não. Escrevi uma solução para um cliente em que faço um retorno ao cookie se não houver armazenamento local, mas isso não deve ser um problema para extensões.

Hoje em dia pode ser melhor usar Chrome.StorageChrome.Storage é assíncrono, o que o torna mais rápido e o LocalSorage é limitado a 5 MB.

Já existem ótimas respostas aqui, mas observe que, se você decidir usar um script de conteúdo em sua extensão, esse script de conteúdo não terá acesso ao LocalSorage. Portanto Chrome.Storage é uma boa alternativa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top