Le stockage local est effacé dans l'extension chrome

Je souhaite donc sauvegarder le thème choisi par l'utilisateur, et je choisis donc le menu contextuel pour les afficher. Chaque fois que je ferme mon onglet (après 3 fois) ou quittez chrome, il oublie mon choix.

Mes options.html

<html> <head> <script src="options.js"></script> <link href='https://fonts.googleapis.com/css?family=Raleway:400,300,200,100' rel='stylesheet' type='text/css'> </head> <body> <center> <label class="paylabel" for="cardtype">Theme:</label> <select id="cardtype" name="cards"> <option value="selectcard">--- Please select ---</option> <option value="op1">Theme 1</option> <option value="op2">Theme 2</option> </select> </center> <br /> <br /> <br /> <br /> <h1 style="font-family:Raleway; font-weight:200; float:left">Theme 1</h1> <h1 style="font-family:Raleway; font-weight:200; float:Right">Theme 2</h1> <br /> <br /> <br /> <br /> <br /> <br /> <img src = "screen2.png"; alt="" style="float:left"/> <img src = "screen1.png"; alt="" style="float:right"/> </body> </html> 

Options.js:

 time=setInterval(function(){ var ddl = document.getElementById("cardtype"); var selectedValue = ddl.options[ddl.selectedIndex].value; localStorage["inputText"] = selectedValue; var myvar = localStorage["inputText"]; if (myvar == "op2") { chrome.browserAction.setPopup({ popup: 'popup.html' }); } else{ chrome.browserAction.setPopup({ popup: 'popup2.html' }); } },1000); 

Merci.

  1. Déplacez <script src="options.js"></script> avant la </body> fermeture afin que le code de script ne s'exécute que lorsque l'intégralité du document est analysée et chargée.
  2. Au lieu de setInterval utilisez un auditeur sur le changement approprié.
 var element = document.getElementById("cardtype"); element.value = localStorage.inputText || 'op1'; element.addEventListener("change", function(e) { var selectedValue = this.value; localStorage.inputText = selectedValue; chrome.browserAction.setPopup({ popup: selectedValue == 'op1' ? 'popup.html' : 'popup2.html' }); });