Связь расширения для браузера и активной страницы
Пробую сделать расширение для браузера и столкнулся с одним непонятным моментом. Как сделать, чтобы скрипт мог видеть сразу и popup расширения, и активную страницу в браузере? Для примера: в расширении поле для ввода и кнопка. Вводим текст в поле, нажимаем кнопку и в какой-то элемент на странице в браузере вставляем то, что ввели. Прошу дать хотя бы наводку. P.s.: расширение делаю для оперы, если это важно
Ответы (1 шт):
Автор решения: Alexander Lonberg
→ Ссылка
Можно воспользоваться несколькими вариантами:
- самый простой, но не всегда удобный, комбинировать отправку/прием сообщений
- runtime.sendMessage - отправить сообщение, но только не скрипту контента, например из popup в background
- tabs.sendMessage - отправить сообщение табу
- runtime.onMessage - устанавливает слушателя сообщений
- немножко сложнее, но максимально гибкий
- runtime.connect - из всех зависимых скриптов(контент,popup, и т.п.) запрашиваем соединение с background
- runtime.onConnect - в background принимаем соединиения
- ... далее, в этом варианте, используем для связи долгоживущий порт, по которому очень легко передавать/получать сообщения в обе стороны.
PS: Расширение лучше делать и тестировать в Chrome, а после установить его в Оперу.