Показать сообщение отдельно
  #1 (permalink)  
Старый 13.02.2015, 21:35
Аватар для _uNcommon
Новичок на форуме
Отправить личное сообщение для _uNcommon Посмотреть профиль Найти все сообщения от _uNcommon
 
Регистрация: 13.02.2015
Сообщений: 3

Передача переменной в функцию | chrome extensions
Здравствуйте!

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

Принцип действия:
При включенном расширении постоянно работает фоновой скрипт (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?
Изображения:
Тип файла: jpg alrfalse.jpg (10.5 Кб, 2 просмотров)
Тип файла: jpg alrtrue.jpg (13.5 Кб, 2 просмотров)
Тип файла: jpg savfalse.jpg (12.4 Кб, 2 просмотров)
Тип файла: jpg savtrue.jpg (13.0 Кб, 2 просмотров)
Ответить с цитированием