Как правильно начать писать расширение? Какой бы порядок действий вы посоветовали?

Есть задание написать расширение для браузера Chrome.

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

Требования:
 Расширение загружает список сайтов по адресу
www.softomate.net/ext/employees/list.json
 Список сайтов обновляется расширением 1 раз в час, но не чаще, чем 1 раз в час
 При посещении пользователем страницы из списка сайтов (поле «domain») –
показывать сообщение на загруженной странице (поле «message»)
 Сообщение должно быть инъекцией HTML-кода в страницу
 Пользователь должен иметь возможность закрыть сообщение
 Если пользователь закрыл сообщение - при следующей загрузке сайта сообщение
не должно быть показано
 Если пользователь не закрыл сообщение - при следующей загрузке сайта сообщение
должно быть показано вновь, но не более 3-х раз за сессию браузера
 Добавить кнопку расширения на панель инструментов браузера
 По клику на кнопку вызывать popup-окно
 В popup-окне отобразить список загруженных сайтов с возможностью перехода по
сайтам
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 1
@acwartz
Тут должна быть ваша реклама.
Начните с чтения документации.

В background.js:
в функции инициализации (банально отработает когда расширение будет загружено) Вы зануляете счетчики для сайтов где сообщения не были просмотрены и показаны 3 раза.
Делаете запрос за сайтами и обновляете storage, видимо по принципу: что в файле то и в БД, остальное удаляется.

Попутно вешаете таймер который будет раз в N грузить и обрабатывать данные.

Создаете порт коммуникации с контекстом, где ждете сообщения
- на инициализацию, на которое отвечаете надо ли что-то делать т.е. лезете в storage и проверяете есть ли там домен, сколько раз на него ходили. По итогу контекст делает свою работу.
- сообщение что сообщение отображено контекстом юзеру. Тут обновляете хранилище где увеличиваете счетчик показов.
- сообщение что юзер закрыл сообщение. Тут ставите что юзер просмотрел сообщение (в хранилище).

Создаете порт коммуникации с баблом (pupup же):
- сообщение на получение списка доменов из storage.

Бабл (popup):
По инициализации отправляет сообщение "хочу ссылки", строит тыкательный ul/li/a список, где по нажатию через tabs API вы открываете новую вкладку с ссылкой.

Контекст (context.js который грузится на сайты):
Грузите при document_end, подключаетесь к порту коммуникации и отправляете сообщение что такой-то домен загружен. В ответ ждете инструкции.

По получении ничего не делаете либо же отображаете нужное в DOM-сайта, по итогу сообщаете что сообщение показано и вешаете на кнопки ивент который сообщит в bg о том что уведомление отображено.

усё.

Документация:
- alarms таймеры
- run-time (обмен сообщениями, коммуникация)
- хранилище storage
- вкладки tabs
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы