Limpando localStorage em javascript?

746

Existe alguma maneira de redefinir / limpar o localStorage do navegador em javascript?

Bnicholas
fonte

Respostas:

1371

Use isso para limpar localStorage:

localStorage.clear();
Digital Plane
fonte
6
@BakedInhalf nem um pouco. Talvez seu aplicativo o configure novamente?
destan
5
Chamo localStorage.clear () quando meu aplicativo é iniciado, mas mesmo se eu fechar o navegador, limpar o cache etc., os dados ainda estarão lá. Eu sei disso porque defini uma propriedade "instance" no meu modelo como um número aleatório ao inicializar e, para um determinado ID, a propriedade da instância é sempre a mesma.
sydneyos
11
@ digital-plane Isso limpará o armazenamento local de um domínio específico ou todo o armazenamento?
Cris3
18
clear()removerá todas as chaves e valores localStorage do domínio específico em que você está. O Javascript não pode obter valores localStorage de outros domínios devido ao CORS.
Fizzix 20/03
1
@BakedInhalf está certo, ele permanece até você atualizar a página com força. Quando você limpa o armazenamento local e o preenche logo depois, ele meio que restaura o conteúdo anterior e adiciona um novo item a ele. Quando você limpa o LocalStorage e faz uma atualização forçada, ele está vazio e você pode começar a preenchê-lo novamente.
do Cyber
198

Se você deseja remover um item ou variável específica do armazenamento local do usuário, pode usar

localStorage.removeItem("name of localStorage variable you want to remove");
Ajeet Lakhani
fonte
1
Olá, @Ajeet Se eu não quiser remover um item específico, também há uma maneira de fazer isso? Por exemplo 'removeItemNotIn (key)', 'remove all, exceto uma chave definida'? Desde já, obrigado.
Me_developer
Olá, @Shadow Se não quiser remover um item em particular, também há uma maneira de fazê-lo? Por exemplo 'removeItemNotIn (key)', 'remove all, exceto uma chave definida'? Desde já, obrigado.
Me_developer
Eu descobri uma solução para o meu problema: - if (localStorage.getItem (particularKey) == null) {localStorage.clear (); } Mas se você tiver uma solução melhor, informe-me. Obrigado.
Me_developer
1
@learner Então, você deseja remover todas as chaves, exceto uma chave específica , certo? Para isso você pode fazer algo como isto var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Ajeet Lakhani
1
Também é possível: obter o valor, limpar e definir o valor novamente, mais versátil. let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Michael B.
112
window.localStorage.clear(); //try this to clear all local storage
Naftali tcp Neal
fonte
11

Aqui está uma função que permitirá remover todos os itens localStorage com exceções. Você precisará do jQuery para esta função. Você pode baixar a essência .

Você pode chamar assim

let clearStorageExcept = function(exceptions) {
  let keys = [];
  exceptions = [].concat(exceptions); // prevent undefined

  // get storage keys
  $.each(localStorage, (key) => {
    keys.push(key);
  });

  // loop through keys
  for (let i = 0; i < keys.length; i++) {
    let key = keys[i];
    let deleteItem = true;

    // check if key excluded
    for (let j = 0; j < exceptions.length; j++) {
      let exception = exceptions[j];
      if (key == exception) {
        deleteItem = false;
      }
    }

    // delete key
    if (deleteItem) {
      localStorage.removeItem(key);
    }
  }
};
Christian Juth
fonte
1
Estranho é que undefinedé uma chave válida para setItemegetItem
ebob
@ Bob Sim, pode parecer estranho, mas não, realmente não é. localStorage funciona de maneira semelhante aos objetos em que as chaves são convertidas em seqüências de caracteres. Por exemplo, usar undefined como uma chave como esta localStorage.setItem(undefined, 'example Txt!'):, irá armazená-lo na chave chamada 'undefined'como você pode ver quando executar o código a seguir. console.log(localStorage.getItem('undefined')) será exibido example Txt!.
Jack Giffin
8

O armazenamento local está anexado no global window. Quando registramos o armazenamento local no devtools do chrome, vemos que ele possui as seguintes APIs:

insira a descrição da imagem aqui

Podemos usar as seguintes APIs para excluir itens:

  1. localStorage.clear(): Limpa todo o armazenamento local
  2. localStorage.removeItem('myItem'): Para remover itens individuais
Willem van der Veen
fonte
4

Primeiramente, você precisa verificar se o localStorage está ativado. Eu recomendaria fazê-lo assim:

var localStorageEnabled = false;
try { localStorageEnabled = !!localStorage; } catch(e) {};

Sim, você pode (em alguns casos) apenas verificar se o localStorage é um membro do objeto de janela. No entanto, existem opções de sandbox de iframe (entre outras coisas) que lançarão uma exceção se você tentar acessar o índice 'localStorage'. Portanto, por motivos de melhores práticas, esta é a melhor maneira de verificar se o localStorage está ativado. Em seguida, você pode simplesmente limpar o localStorage assim.

if (localStorageEnabled) localStorage.clear();

Por exemplo, você pode limpar o localStorage após a ocorrência de um erro nos navegadores do kit da web.

// clears the local storage upon error
if (localStorageEnabled)
  window.onerror = localStorage.clear.bind(localStorage);

No exemplo acima, você precisa do .bind(window)porque, sem ele, a localStorage.clearfunção será executada no contexto do windowobjeto, em vez de o localStorageobjeto causar uma falha silenciosa. Para demonstrar isso, veja o exemplo abaixo:

window.onerror = localStorage.clear;

é o mesmo que:

window.onerror = function(){
    localStorage.clear.call(window);
}
Jack Giffin
fonte
3

Se você deseja limpar todos os itens armazenados no localStorage ,

localStorage.clear();

Use isso para limpar todas as chaves armazenadas.

Se você deseja limpar / remover apenas uma chave / valor específico, pode usar removeItem (chave) .

localStorage.removeItem('yourKey');
Moshiur Rahman
fonte
2
localStorage.clear();

ou

window.localStorage.clear();

limpar item específico

window.localStorage.removeItem("item_name");

Para remover um valor específico por ID:

var item_detail = JSON.parse(localStorage.getItem("key_name")) || [];           
            $.each(item_detail, function(index, obj){
                if (key_id == data('key')) {
                    item_detail.splice(index,1);
                    localStorage["key_name"] = JSON.stringify(item_detail);
                    return false;
                }
            });
vino
fonte
1

Para limpar o sessionStorage

sessionStorage.clear();
m-farhan
fonte
0

Aqui está um código simples que limpa o armazenamento local armazenado no seu navegador usando javascript

    <script type="text/javascript">

if(localStorage) { // Check if the localStorage object exists

    localStorage.clear()  //clears the localstorage

} else {

    alert("Sorry, no local storage."); //an alert if localstorage is non-existing
}

</script>

Para confirmar se o armazenamento local está vazio, use este código:

<script type="text/javascript">

// Check if the localStorage object exists
if(localStorage) {

    alert("Am still here, " + localStorage.getItem("your object name")); //put the object name
} else {
    alert("Sorry, i've been deleted ."); //an alert
}

</script>

se retornar nulo, seu armazenamento local será limpo.

amaroko
fonte
0

Este código aqui fornece uma lista de cadeias de chaves que você não deseja excluir e, em seguida, filtra aquelas de todas as chaves no armazenamento local e exclui as outras.

const allKeys = Object.keys(localStorage);

const toBeDeleted = allKeys.filter(value => {
  return !this.doNotDeleteList.includes(value);
});

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
Joseph Moore
fonte