Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2015, 22:26
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Скрипт который ты предположительно внедрил в страницу(main.js) и расширение(popup.html и background.js) работают в разных контекстах.
т.е. для тебя это выражается в том что у расширения и страницы с внедренном скриптом разные домены соответственно и localStorage то же разные.
Это легко проверить открыв в отладчике (клавиша f12) вкладку resourses и проверив значения в localStorage.

Сообщение от _uNcommon
Как мне выполнить проверку с моими данными, в зависимости от состояния checkbox`a?
Не использовать localStorage с разных доменов.
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2015, 23:46
Аватар для _uNcommon
Новичок на форуме
Отправить личное сообщение для _uNcommon Посмотреть профиль Найти все сообщения от _uNcommon
 
Регистрация: 13.02.2015
Сообщений: 3

MallSerg, да, именно в этом у меня и возникла проблема. пробовал также хранить значение в cookie - результат тот же (в принципе, как и причина). Есть какие-нибудь альтернативные варианты хранения?
Ответить с цитированием
  #4 (permalink)  
Старый 19.02.2015, 23:28
Аватар для _uNcommon
Новичок на форуме
Отправить личное сообщение для _uNcommon Посмотреть профиль Найти все сообщения от _uNcommon
 
Регистрация: 13.02.2015
Сообщений: 3

Все еще актуально.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать функцию из переменной? sss2019 Общие вопросы Javascript 7 02.09.2014 13:34
Передача переменной в функцию jankovsky Общие вопросы Javascript 4 26.08.2013 18:58
передача переменной в функцию timeout alfmaster Javascript под браузер 5 20.09.2011 18:40
Передача переменной в функцию из HTML тега A в $ CjEcho AJAX и COMET 2 28.07.2010 11:52
Передача переменной в функцию для теста со случайным выводом вопросов rockdancer Общие вопросы Javascript 1 06.02.2010 23:13