169 похожих чатов

Имеем расширение для браузера Chrome: 1 - background.js - в котором

реализована работа с сервером и прослушиватель внутренних сообщений.
2 - foreground.js - в котором есть ряд функций для работы со страницей, обращается к background.js через систему внутренних сообщений.

Оба скрипта имеют доступ к синхронизированному облаку Google в браузере, где храню и получаю ряд настроек или иных временных данных.
Суть такова что при запуске браузера background.js работает все время но он работает не в браузере а в "специальной песочнице" из которой может получать более высокого уровня доступ к API браузера и через систему сообщений обращаться к скриптам на других вкладках, так же передавать данные.

Он (background.js) же при загрузке страницы внедряет в нее скрипт foreground.js и начинает прослушивать сообщения от него, в зависимости от которых возвращает данные или выполняет получение данных и сохранение их в общее облако.

Проблема:
Так как я реализовал ряд функций для работы с автоматизацией страницы в foreground.js то при каждом переходе на новую страницу или в другой раздел сайта этот скрипт загружается по новой что логично.

Вопрос:
Как построить запрограммированный порядок выполнения ряда функций что бы манипулировать с DOM страницей полагаясь на данные с сервера получаемые от background.js ?

Я полагаю что будет логично записать все функции для взаимодействия с DOM во встраиваемом foreground.js там же реализовать прослушивание внутренних сообщений от background.js всю логику и порядок выполнения вынести в background.js в которой в тот или иной момент выполнять отправку сообщения на foreground.js переключая логику выполнения.

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

2 ответов

22 просмотра

У меня к сожалению навыков маловато. Для моей задачи достаточно было взять уже готовое расширение и переписать две три строки. Я даже с этим два месяца возился. Задача ваша очень интересная, будь у меня время я бы изучил как все работает, но, к сожалению сейчас по копирайту заказов много и нет времени погружаться. Спасибо за приглашение. И кстати, думаю имеет смысл создать канал по расширениям. Пусть там будет только 10 человек первое время, но канал здорово помог бы начинающим всем. Вдобавок хочу добавить — попробуйте реализовать функционал, который у вас вот никак не получается через Selenium IDE. Это расширение, которое запоминает последовательность действий и запускает. Тоже работает через дефтулс. Не знаю подходит ли для вашей задачи, но все же можно посмотреть как реализуется та или иная задача.

MRX- Автор вопроса
Steve Rogers
У меня к сожалению навыков маловато. Для моей зада...

У меня предыдущая версия на Selenium реализован десктоп скрипт, не совсем удобно, на край можно так же отдельным окном процесс запускать Selenium подобного процесса что будет управлять браузером но это дополнительное окно, я хочу обойтись без такого подхода хоть окно бы не помешало, хочу на чистом JS, за ответ спасибо, о группе тое подумал.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта