Effacer localStorage en javascript?

746

Existe-t-il un moyen de réinitialiser / effacer le stockage local du navigateur en javascript?

Bnicholas
la source

Réponses:

1372

Utilisez ceci pour effacer localStorage:

localStorage.clear();
Avion numérique
la source
6
@BakedInhalf pas du tout. Peut-être que votre application le redéfinit?
destan
5
J'appelle localStorage.clear () au démarrage de mon application, mais même si je ferme le navigateur, vide le cache, etc., les données sont toujours là. Je le sais car j'ai défini une propriété "instance" sur mon modèle sur un nombre aléatoire lors de l'initialisation, et, pour un id donné, la propriété instance est toujours la même.
Sydney
11
@ digital-plane Cela effacera-t-il le stockage local d'un domaine spécifique ou tout le stockage?
crisron
18
clear()supprimera toutes les clés et valeurs localStorage du domaine spécifique sur lequel vous vous trouvez. Javascript n'est pas en mesure d'obtenir des valeurs localStorage à partir d'autres domaines en raison de CORS.
Fizzix
1
@BakedInhalf a raison, il reste jusqu'à ce que vous actualisiez la page. Lorsque vous effacez votre localStorage et le remplissez juste après, il restaure en quelque sorte le contenu précédent et vous y ajoute un nouvel élément. Lorsque vous effacez votre localStorage et effectuez une actualisation matérielle, il est vide et vous pouvez recommencer à le remplir.
Cyber
198

Si vous souhaitez supprimer un élément ou une variable spécifique du stockage local de l'utilisateur, vous pouvez utiliser

localStorage.removeItem("name of localStorage variable you want to remove");
Ajeet Lakhani
la source
1
Salut, @Ajeet Si je ne veux pas supprimer pour un élément particulier, y a-t-il un moyen de le faire aussi? Par exemple, 'removeItemNotIn (key)', 'remove all except for a defined key'? Merci d'avance.
Me_developer
Salut, @Shadow Si je ne veux pas supprimer pour un élément particulier, y a-t-il un moyen de le faire aussi? Par exemple, 'removeItemNotIn (key)', 'remove all except for a defined key'? Merci d'avance.
Me_developer
J'ai trouvé une solution à mon problème: - if (localStorage.getItem (particularKey) == null) {localStorage.clear (); } Mais si vous avez une meilleure solution, faites-le moi savoir. Merci.
Me_developer
1
@learner Vous voulez donc supprimer toutes les clés sauf une clé particulière , non? Pour cela, vous pouvez faire quelque chose comme ça var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Ajeet Lakhani
1
Également possible: obtenir la valeur, l'effacer et la régler à nouveau, plus polyvalent. 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 aka Neal
la source
11

Voici une fonction qui vous permettra de supprimer tous les éléments localStorage avec des exceptions. Vous aurez besoin de jQuery pour cette fonction. Vous pouvez télécharger l'essentiel .

Vous pouvez l'appeler comme ça

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
la source
1
Ce qui undefinedest étrange, c'est que c'est une clé valide pour setItemetgetItem
ebob
@ebob Oui, cela peut sembler bizarre, mais non, ce n'est vraiment pas le cas. localStorage fonctionne de la même manière que les objets dans la mesure où les clés sont converties en chaînes. Par exemple, en utilisant undefined comme clé comme ceci localStorage.setItem(undefined, 'example Txt!'):, le stockera en fait sous la clé appelée 'undefined'comme vous pouvez le voir lorsque vous exécutez le code suivant. console.log(localStorage.getItem('undefined')) sortira example Txt!.
Jack Giffin
8

Localstorage est attaché sur le global window. Lorsque nous enregistrons localstorage dans les devtools de chrome, nous constatons qu'il possède les API suivantes:

entrez la description de l'image ici

Nous pouvons utiliser les API suivantes pour supprimer des éléments:

  1. localStorage.clear(): Efface tout le stockage local
  2. localStorage.removeItem('myItem'): Pour supprimer des éléments individuels
Willem van der Veen
la source
4

Tout d'abord, vous devez vérifier pour vous assurer que localStorage est activé. Je recommanderais de le faire comme ceci:

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

Oui, vous pouvez (dans certains cas) simplement vérifier si le localStorage est membre de l'objet window. Cependant, il existe des options de sandboxing iframe (entre autres) qui lèveront une exception si vous essayez même d'accéder à l'index 'localStorage'. Ainsi, pour des raisons de bonnes pratiques, c'est la meilleure façon de vérifier si le localStorage est activé. Ensuite, vous pouvez simplement effacer le localStorage comme ça.

if (localStorageEnabled) localStorage.clear();

Par exemple, vous pouvez effacer le localStorage après qu'une erreur se soit produite dans les navigateurs webkit comme ça.

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

Dans l'exemple ci-dessus, vous avez besoin du .bind(window)car sans lui, la localStorage.clearfonction s'exécutera dans le contexte de l' windowobjet, au lieu de l' localStorageobjet, ce qui le rendra silencieux. Pour le démontrer, regardez l'exemple ci-dessous:

window.onerror = localStorage.clear;

est le même que:

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

Si vous voulez effacer tout élément que vous stockés dans localStorage puis

localStorage.clear();

Utilisez-le pour effacer toutes les clés enregistrées.

Si vous souhaitez effacer / supprimer uniquement une clé / valeur spécifique, vous pouvez utiliser removeItem (clé) .

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

ou

window.localStorage.clear();

pour effacer un élément particulier

window.localStorage.removeItem("item_name");

Pour supprimer une valeur particulière par 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
la source
1

Pour effacer sessionStorage

sessionStorage.clear();
m-farhan
la source
0

Voici un code simple qui effacera le stockage local stocké dans votre navigateur en utilisant 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>

Pour confirmer si localstorage est vide, utilisez ce code:

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

s'il renvoie null, votre stockage local est effacé.

amaroko
la source
0

Ce code vous donne ici une liste de chaînes de clés que vous ne voulez pas supprimer, puis il filtre celles de toutes les clés du stockage local puis supprime les autres.

const allKeys = Object.keys(localStorage);

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

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