Имеем расширение для браузера 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 переключая логику выполнения.
Я отдаю себе отчет что мало кто имеет опыт разработки расширений и тем более с таким функционалом, но все же я предполагаю что есть более эффективный способ обыграть задачу.