Показать сообщение отдельно
  #1 (permalink)  
Старый 20.06.2016, 13:57
Новичок на форуме
Отправить личное сообщение для akokarev Посмотреть профиль Найти все сообщения от akokarev
 
Регистрация: 20.06.2016
Сообщений: 4

Chrome расширение. Пересылка сообщений между popup.js и conten.js чеhtp background.js
Добрый час!
Помогите с расширением для Google Chrome.
Подробности...
Есть уже рабочее расширение-помогалка для сдачи тестов в системе онлайн обучения. Работает так: на странице с вопросами парсит вопросы и варианты ответов, ищет в localStorage вопрос и, если найден в базе, подсвечивает правильные ответы. Вопросы ищет по id (в теге с вопросом явно указан), в localStorage хранит id как ключ и JSON строку с массивом ответов. По окончании теста выводится результаты вместе с правильными ответами. Сюда подгружается другой скрипт, который сохраняет в localStorage найденные правильные ответы
Суть проблемы:
Хочу сделать синхронизацию ответов из localStorage с базой на сайте. Для этого сделан popup.html+popup.js с кнопкой синхронизировать, но проблема в том, что этот popup.js выполняется в другом контексте и localStorage у него пустой... Нашел возможность отправки сообщений между popup и background и между content и background. Но не могу разобраться как переслать сообщение от popup к content. На одноразовых сообщениях ни как не получается сделать, а вот на долгоживущих соединениях получилось - в background создаю две переменные content_port и popup_port, при соединении записываю в них подключенные порты, все работает, НО! Все хорошо, если открыта одна вкладка, а если открыты 2 вкладки, то возникают ошибки...
Собственно вопрос:
1) Подскажите, как правильно организовать прокси между popup и content?
2) Где правильнее хранить ответы - в localStorage у content или у background?
3) Как лучше отправить весь localStorage на сервер? Пока прохожу циклом весь localStorage и каждый item отправляю отдельным post запросом XMLHttpRequest(), но хотелось бы одним файлом.
4) Как лучше передать вcю базу с сайта?

P.S.: сорри за много букафф =D
Ответить с цитированием