Передача переменной в функцию | chrome extensions
Вложений: 4
Здравствуйте!
Есть небольшое расширение для хрома, с помощью которого я хочу индивидуально улучшить интерфейс некой страницы. Принцип действия: При включенном расширении постоянно работает фоновой скрипт (background.js), который внедряет на разрешенную мною веб-страницу мою функцию (из другого скрипта, main.js) и вызывает её по событию onload. popup.html: В расширении есть страница настроек. В ней прописан checkbox, который отвечает за запуск моей внедряемой функции или её остановку. В приложении к теме картинки интерфейса страницы настроек расширения. main.js: Значение checkbox`a я сохраняю в localStorage. Состояние checkbox`a (true / false) изменяется в зависимости от данных в localStorage. Не получается: Достать это значение из localStorage и использовать его в проверке. Пример:
// сохраняю состояние checkbox`a при клике на него
function saveOPT(){
var CHBX = document.getElementById('myCHBX').checked;
localStorage.setItem('keyCHBX', CHBX);
// подсказка о том что я сохранил
document.getElementById('result').innerHTML = "saved: " + localStorage.getItem('keyCHBX');
}
// достаю значение из localStorage и меняю состояние checkbox`a
function resOPT(){
var valCHBX = localStorage.getItem('keyCHBX');
// если в хранилище нет такого ключа, записываем его
(valCHBX == null) ? valCHBX = false : '';
// т.к. в хранилище записывает текст, делаю доп. проверку
(valCHBX == "true") ? valCHBX = true : valCHBX = false;
document.getElementById('myCHBX').checked = valCHBX;
document.getElementById('result').innerHTML = "already: " + valCHBX;
}
// функция, которая внедряется, и для которой мне не получается сделать проверку.
// Если делать так :
var valCHBX = localStorage.getItem('keyCHBX');
(valCHBX == "true") ? valCHBX = true : valCHBX = false;
function main() {
if(valCHBX){
alert('checked = true');
} else {
alert('checked = false');
}
}
// Функция не выполняется (т.е. выводит checked = false), т.к. ищет keyCHBX в хранилище сайта, на котором я запускаю расширение. Соотв. данного ключа там нет.
// Если делать так :
var valCHBX = true; или var valCHBX = false;
function main() {
if(valCHBX){
alert('checked = true');
} else {
alert('checked = false');
}
}
// Проверка происходит нормально.
Как мне выполнить проверку с моими данными, в зависимости от состояния checkbox`a? |
Скрипт который ты предположительно внедрил в страницу(main.js) и расширение(popup.html и background.js) работают в разных контекстах.
т.е. для тебя это выражается в том что у расширения и страницы с внедренном скриптом разные домены соответственно и localStorage то же разные. Это легко проверить открыв в отладчике (клавиша f12) вкладку resourses и проверив значения в localStorage. Цитата:
|
MallSerg, да, именно в этом у меня и возникла проблема. пробовал также хранить значение в cookie - результат тот же (в принципе, как и причина). Есть какие-нибудь альтернативные варианты хранения?
|
Все еще актуально.
|
| Часовой пояс GMT +3, время: 17:25. |