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 ответов

8 просмотров

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

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

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

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
Я короче решил скомпилировать Nim в js, я думал он сработает как обычный транслятор. По итогу он мне создал файл с расширением js, и туда поместил кучу кода Вопрос, что это з...
𝕾𝖍𝖆𝖉𝖊 <suspense>
9
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
это группа токсиков или тех кто помогает?
Ибрагим
9
мы пытаемся подменить функцию, которая имеет меньше инструкций относительно функции, которой подменяем. https://www.reddit.com/r/jailbreakdevelopers/comments/w06ujy/mshookfun...
Óðinn
6
У кого-нибудь есть под рукой функция кодирования юникода, которая из фразы На русском сделает \u041d\u0430\u0020\u0440\u0443\u0441\u0441\u043a\u043e\u043c ?
Daniil Smolyakov
7
Карта сайта