12
votes

LocalStorage - Clear () ou RefinitionItem ()?

devrais-je utiliser clair () pour tout effacer dans localStorage ou dois-je juste manuellement removeItem () Ceux que j'ai définis Sur ce site particulier (qui est assez facile à garder une trace de)?

Je demande parce que je ne veux pas finir par effacer les utilisateurs ' localStorage s'ils ont d'autres valeurs définies. Je teste cela dans localhost et remarquai qu'en utilisant Clear () , tout ce que j'aurais défini précédemment dans d'autres projets a été effacé.

EDIT: J'aurais dû mentionner que Je sais que LocalStorage est à la disposition du domaine. Je gère un site qui suit cette structure: xxx

où chaque fichier utilise ses propres variables locales distinctes. Si i localstorage.clear () Inside Project2, Project1 et les paramètres de Project3 seront également perdus.


1 commentaires

Je ne sais pas quelle est la question ici. Vous dites que vous ne pouvez pas utiliser effacer alors ...


3 Réponses :


5
votes

Effacer () efface tout sur l'origine actuelle ( https://developer.mozilla.org/en-us/docs/javascript/same_origin_policy_for_javascript ). Utilisation Clear () sur exemple.com n'affectera pas le localStorage pour exemple2.com. Il est d'éviter les données pour tous les projets de votre ordinateur car tous les fichiers de test que vous avez sont sur la même origine ( http: // localhost localhost ou fichier: /// c: \ < / code>). Par conséquent, il ira bien à utiliser clair ()


0 commentaires

12
votes

localStorage est clément à une origine. Donc, si tous vos projets fonctionnent sur localhost, vous effacerez toutes vos valeurs lorsque vous utilisez Clear () et la seule méthode de sécurité est la suppression individuelle.

Dans un environnement de production, chaque projet doit avoir son propre domaine et clair doit être sûr.

C'est donc une question de savoir quoi d'autre se trouve sur l'origine actuelle. Si vous contrôlez tout sur l'origine actuelle et que vous ne vous dérangeez pas tout, Clear () est le meilleur choix et a été conçu à cet effet. S'il y a d'autres parties de votre code à l'aide de localStorage ou d'autres projets hébergés sur la même origine, vous voudrez être plus sélectif et utiliser removeItem () . .


2 commentaires

Malheureusement, je n'ai pas de domaine isolé pour chacun de mes projets - je ne pouvais tout simplement pas me permettre. J'aimerais tout garder sous mon propre site Web de Portfolio'-ESQ, avec des sous-dossiers contenant chacun de mes projets différents et différents. Merci bien, on dirait que removeItem () est la voie à suivre!


@Jaxo Si vous avez un sous-domaine différent pour chaque projet clair () fonctionnerait toujours



0
votes

Effacer () code> strong>

  1. essaiera tout de votre localStorage Li>
  2. ne prend pas d'argument li> ol>

    removeItem () méthode forte> p>

    1. ne supprimera que ces articles locaux que vous faites référence comme un argument. Li>
    2. Pour faire removeItem strong>, vous devez avoir besoin de passer dans un argument. Par exemple: li> ol>

      removeItem ("liste") supprimera uniquement les éléments de la touche "Liste" p>

      // pour mieux comprendre le code ci-dessous strong> p>

      p>

          <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Document</title>
      </head>
      <body>
          <button id="clear-method">Clear Method</button>
          <button id="removeItem-method">RemoveItem Method</button>
      
      
          <script>
              const clearMethod = document.getElementById("clear-method");
              const removeItemMethod = document.getElementById("removeItem-method");
      
              // declaring arraay for localStorage
              const computer = [
          {
              Brand: "Asus",
              Model: "Unknown"
          }
      ];
      
      const phone = [
          {
              Brand: "Realme",
              Model: "Unknown"
          }
      ]
      
      // setting up items on localStorage
      localStorage.setItem("computer", JSON.stringify(computer));
      localStorage.setItem("phone", JSON.stringify(phone));
      
              clearMethod.addEventListener("click", ()=>{
              localStorage.clear();
              })
      
              removeItemMethod.addEventListener("click", ()=>{
                  localStorage.removeItem("phone");
              })
          </script>
         
      </body>
      </html>


0 commentaires