У меня есть расширение Chrome. Я пытаюсь добавить функции с возможностью включения / выключения.
У меня есть флажки в popup.html, которые нажимают, записывают значение полей в localStorage.Затем в моем скрипте контента я отправляю запрос на значение.
Раньше у меня был только 1 запрос, и он работал нормально.Затем я попытался добавить еще один, и что бы я ни пытался, это не сработает, даже если я закомментирую другой запрос.Вот код в моем скрипте содержимого:
autopoke = 'default';
secondbutton = 'default';
chrome.extension.sendRequest({localstorage: "autopoke"}, function(response)
{
if (response.autopoke == "true")
{
autopoke = true;
}
})
chrome.extension.sendRequest({localstorage: "secondbutton"}, function(response)
{
console.log(response) //for debugging
if (response.secondbutton == "true")
{
secondbutton = true;
}
})
Независимо от того, является ли переменная localStorage "secondbutton" значением true или нет, вывод второго запроса будет пустым.Вывод на консоль Chrome также является пустым объектом.Я попытался переместить эту строку в первый запрос, и он вывел объект, в котором где-то было «autopoke = false».
Чтобы убедиться, что значение localStorage установлено, я добавил это в popup.html:
alert(localStorage.secondbutton);
И когда я нажимаю на всплывающее окно, появляется предупреждение, говорящее true .Я действительно не могу понять это, я даже пытался setTimeout () подождать несколько секунд, но результаты те же: пустой вывод для "секундной кнопки" localStorage.
background.html:
<html>
<script type='text/javascript'>
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.localstorage == "autopoke") {
sendResponse({autopoke: localStorage.autopoke});
}
else {
sendResponse({}); // snub them.
}
});
</script>
</html>
popup.html:
<html>
<head>
<style type='text/css'>
body
{
font-size:10pt;
width:220px;
font-family: "Verdana";
font-weight: bold;
text-shadow: 2px 2px 2px green;
}
</style>
<script type='text/javascript'>
function update()
{
localStorage.autopoke = document.myform.check.checked;
localStorage.secondbutton = document.myform.secondbutton.checked;
}
</script>
</head>
<body>
<form name='myform'>
<table border="0">
<tr>
<td>
<label for='check'>Autopoke:</label>
</td>
<td>
<input type='checkbox' id='check' onclick='update()'/>
</td>
</tr>
<tr>
<td>
<label for='secondbutton'>Additional Poke Button:</label>
</td>
<td>
<input type='checkbox' id='secondbutton' onclick='update()'/>
</td>
</tr>
</table>
</form>
<script type='text/javascript'>
if( localStorage.autopoke == "true")
{
document.myform.check.checked=true;
}
if ( localStorage.secondbutton == "true" )
{
document.myform.secondbutton.checked=true;
}
</script>
</body>
</html>