Как получить значение локального хранилища на фоновой странице? - PullRequest
0 голосов
/ 04 августа 2011

Я новичок в том, что касается разработки расширения Chrome.

Я тестирую расширение. В этом у меня есть фоновая страница и страница настроек. На странице настроек я сохраняю введенный пользователем пароль в локальном хранилище, которое я хочу восстановить на фоновой странице, которая находится по щелчку значка браузера.

Моя страница настроек:

<html>
<head>
<title>Options for Password</title>
<script>
 function savePassword()
  {
 window.localStorage.setItem('password', txtPassword.value);


  }
</script>   
</head>
<body >
<h1>Enter Password</h1>
<input type='password' name='txtPassword' id='txtPassword'/>
<br />
<button onclick='savePassword();'>Save</button>
<br />
</body>
</html>

А у меня фоновая страница:

<html>
<head>
<script>
 // Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {code:"alert('password from tab:'+window.localStorage.getItem('password'));getfeedback_dialog_submitButton.setAttribute('onclick', 'if(gettext.value==\'"+window.localStorage.getItem(password)'+"\'){document.body.removeChild(getfeedbackcontainer);document.body.removeChild(getfeedbackoverlay);}');"});
});


</script>
</head>
</html>

Когда я сохраняю пароль на странице параметров и затем нажимаю на действие браузера, я получаю предупреждение пароль от вкладки: null .

Я запутался, как получить значение, хранящееся в локальном хранилище?

1 Ответ

1 голос
/ 04 августа 2011

Ваш код получает значение localStorage со страницы, где нажимается действие браузера, где оно равно null. Измените ваши цитаты, чтобы получить его на фоновой странице:

chrome.tabs.executeScript(null, {code:"alert('password from tab:"+window.localStorage.getItem('password')+"');"});

Обратите внимание, что это может позволить внедрение кода.

РЕДАКТИРОВАТЬ : Сделайте это, это должно работать, пока ваши переменные определены правильно и window.localStorage.getItem('password') ожидается как строка:

chrome.tabs.executeScript(null, {code:"alert('password from tab:"+window.localStorage.getItem('password')+"');"
+"getfeedback_dialog_submitButton.addEventListener('click', function(event){if(gettext.value=='"+window.localStorage.getItem('password')+"')"
+"{document.body.removeChild(getfeedbackcontainer);document.body.removeChild(getfeedbackoverlay);}},false);"});

Я разбил ваш код на несколько строк для удобства чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...