Мне не удается настроить расширение chrome для одновременной работы с несколькими вкладками. Общий поток моего расширения:
Фоновый скрипт открывает новое окно в начале, где находится расширение js.
- Расширение, чем вставляет файл js в активной вкладке браузера через
executeScript
api - В своем обратном вызове отправляет сообщение на эту же вкладку, с помощью которого мой код js выполняет операции с DOM вкладки
- активная вкладка отправляет сообщение на вкладку расширения
- расширение изменяет адрес активной вкладки, снова через
executeScript
- фоновый скрипт прослушивает tabs.onUpdate, чтобы определить, когда адрес страницы был изменен завершенным (статус === 'complete'), чтобы вставить js в активную вкладку браузера.
Шаги 2-5 go до тех пор, пока не будут выполнены заданные критерии, определенные в пользовательском интерфейсе вкладки расширения, и процесс остановится. Это отлично работает, но мне нужно использовать это, чтобы это происходило одновременно на нескольких вкладках.
Первая идея, которая появляется, - это создать несколько вкладок с использованием tabs.create
api и при условии, что просто пропустите соответствующую вкладку идентификаторы в потоке выше - будет работать. Но это не так. В простейшем сценарии создания только 2 вкладок, 2 изменяют адрес в начале, но первая вкладка делает это только один раз. Процесс продолжается только со второй вкладкой.
Есть ли врожденная проблема с описанным выше потоком и «инфраструктурой» расширения, которая не может поддерживать такое поведение? Мне не хватает использования web workers
в фоновом скрипте - потому что он синхронизирует прослушивание нескольких вкладок, отправляющих ему сообщения?
Любые указания будут очень признательны.