0

Так что я хочу сохранить тему, которую пользователь выбирает, и, соответственно, я выбираю всплывающее окно, чтобы показать их. Каждый раз, когда я закрываю свою вкладку (после 3-х раз) или оставляю хром, она забывает о моем выборе.Локальное хранилище стирается в chrome extension

Мой 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); 

Спасибо.

+0

Не используйте 'setInterval'. Используйте правильный метод, например 'ddl.onchange = function (e) {.......};' – wOxxOm

+0

Хорошо, это не работает, что еще мне нужно делать? Спасибо – Ahan

+0

Вам нужно попробовать его реализовать и использовать [отладчик] (https://developer.chrome.com/extensions/tut_debugging) в случае проблем. – wOxxOm

ответ

0
  1. Move <script src="options.js"></script> перед закрывающим тэгом </body> так, чтобы код сценария будет выполняться только тогда, когда весь документ обрабатывается и загружается.
  2. Вместо setInterval используйте надлежащего прослушивателя.

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' 
    }); 
}); 
+0

Извините, этот код, похоже, не работает для меня. Даже если я поставил предупреждение, это не работает для меня. – Ahan

+0

Я должен быть в состоянии получить всплывающее предупреждение, если я поставлю предупреждение в свой код js (после прослушивателя событий), правильно? – Ahan

+0

Извините, что ваш код не сохраняет значение в локальном хранилище – Ahan

Смежные вопросы