Передача переменной в функцию | 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:35. |