|
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
|
|||||||||||
Chrome Extension Можно ли при разработке расширения для Chrome запускать код, взаимодействующий с DOM в фоновом режиме08.02.2025, 23:47. Показов 1553. Ответов 10
Метки нет (Все метки)
Здравствуйте! Интересно, будет ли результат в виде изменения DOM от такой реализации и вообще можно ли так делать или я что-то не понял. Пример взял отсюда:
https://developer.chrome.com/d... tInjection вот пример по ссылке:
У меня пример посложнее - вместо getTitle код изменяет DOM, при этом изменения не происходит. Как у меня - примерно вот так: background.js
0
|
|||||||||||
| 08.02.2025, 23:47 | |
|
Ответы с готовыми решениями:
10
Можно ли обрабатывать страницы сайта используя расширения для google chrome? Как заставить работать кликер на С++ в фоновом режиме в фоновом окне? Можно ли, чтобы программа сама, в фоновом режиме, работала в браузере? |
|
91 / 58 / 14
Регистрация: 16.11.2018
Сообщений: 274
|
||||||
| 09.02.2025, 01:46 | ||||||
|
>> Можно ли ..
Можно только осторожно. Параметр функции .executeScript ... сериализуется в JSON и передается табу там из него создается объект свойство которого func вызывается как функция. Что возвращает?
Парсинг сайта: как получить код страницы в память
1
|
||||||
|
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
|
|||||||
| 09.02.2025, 03:21 [ТС] | |||||||
0
|
|||||||
|
1286 / 1253 / 187
Регистрация: 21.01.2024
Сообщений: 5,764
|
|
| 09.02.2025, 09:55 | |
|
1
|
|
|
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
|
||
| 09.02.2025, 17:58 [ТС] | ||
|
0
|
||
|
1286 / 1253 / 187
Регистрация: 21.01.2024
Сообщений: 5,764
|
||||||
| 09.02.2025, 18:08 | ||||||
|
Вот так вот
А где сказано, что параметр executeScript должен сериализоваться, я не нашел.
1
|
||||||
|
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
|
||||||||||||
| 09.02.2025, 23:49 [ТС] | ||||||||||||
|
Получилось так:
Помимо всего этого, я не понимаю, почему кнопка появляется только при перезагрузке страницы по кнопке браузера "обновить страницу". Событие срабатывает также, когда нажимаются кнопки горизонтального меню внутри страницы (документ меняется только в нижних блоках под горизонтальным меню, сам блок, куда добавляется кнопка остаётся как есть). Это тоже приводит к срабатыванию "chrome.tabs.onUpdated", но кнопка не добавляется после такого. Также кнопка исчезает, если нажать F12, открывая инструменты разработчика. Какие-то "хитрости" здесь должны быть. Интересно, что после того как обновляю страницу по кнопке "обновить", то в консоли убеждаюсь, что метод был вызван столько же раз, сколько я нажимал на вкладки меню. Почему кнопка не добавляется ... Добавлено через 1 час 5 минут Событие дважды срабатывает, кнопка два раза добавляется после прогрузки документа. Магия какая-то... Добавлено через 8 минут Не знаю что такого в манифестации, директория "scripts/modules/" содержит только скрипт с реализованным методом, который ни к какому событию не привязан.
Такое впечатление, что страницу обновляю дважды одновременно, так же не может быть... в системе отладки гугл что-то поломалось.
0
|
||||||||||||
|
91 / 58 / 14
Регистрация: 16.11.2018
Сообщений: 274
|
||
| 10.02.2025, 01:18 | ||
|
Первые предложения по этой ссылке. " The arguments to pass to the provided function. This is only valid if the func parameter is specified. These arguments must be JSON-serializable. " Чуть ниже есть описание для свойcтва func " func void optional Chrome 92+ A JavaScript function to inject. This function will be serialized, and then deserialized for injection. This means that any bound parameters and execution context will be lost. Exactly one of files or func must be specified. The func function looks like: () => {...} " Это просто цитирование справки из приведенной ссылки.
1
|
||
|
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
|
|||||||||
| 10.02.2025, 05:13 [ТС] | |||||||||
|
Когда перезагрузка страницы происходит при нажатии на вкладку меню, кнопка не появляется, в консоли видно, что событие перезагрузки срабатывает, а стоит перезагрузить страницу из функции браузера Chrome - добавляется. И по нажатию на вкладку вот эта штуковина не срабатывает (строка 34 кода js листинга 7-го поста):
Странный эффект.
0
|
|||||||||
|
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
|
|||||||||||
| 10.02.2025, 23:30 [ТС] | |||||||||||
|
Ну я так понимаю, всё дело в задании target.
0
|
|||||||||||
|
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
|
||||||
| 12.02.2025, 02:06 [ТС] | ||||||
|
background.js
Цитата: Внедряет скрипт в целевой контекст. По умолчанию скрипт будет запущен в document_idle или немедленно, если страница уже загружена. Если установлено свойство injectImmediately, скрипт будет внедрен без ожидания, даже если страница не завершила загрузку. Если скрипт оценивается как обещание, браузер будет ждать, пока обещание не будет выполнено, и вернет результирующее значение. "document_idle" В-общем-то неважно, загрузится ли документ окончательно, я в подключаемом скрипте всё-равно отлавливаю изменения DOM, что позволяет точно обнаружить нужный элемент, куда я хочу вставить, то (кнопка) что нужно. Если бы что-то пошло не так - я бы увидел ошибки. Просто не запускается инструкция: chrome.scripting.executeScript. И такой симптом наблюдается для текущей активной вкладки, когда событие обновления происходит по нажатию на кнопку горизонтального меню в этой странице. Событие происходит, в консоли я вижу соответствующий вывод, код выполняется до chrome.scripting.executeScript в вызванном методе addMenuChrome и всё, дальше ничего не происходит, пока не обновишь страницу вручную через стандартную функцию браузера. Документация говорит, что этот механизм аналогичен реализации через content_scripts, для этого правда события можно задать в manifest.json, когда нужно внедрять скрипт. Так тоже пробовал - абсолютно тот же симптом. И учитывая все эти изложенные симптомы, я прихожу к выводу, что скрипт через инструкцию chrome.scripting.executeScript для каждого активного окна, внедряется и отрабатывает единожды при обновлении страницы через стандартную функцию браузера или при переходе по url, и больше эта инструкция в коде не выполняется, если после этого происходит некое событие. Добавлено через 3 часа 41 минуту Я заблуждался, скорее всего, как я полагаю, это всё из-за параллельной прогрузки других ресурсов. Структура страницы сложная, поэтому когда остальные фреймы ещё не прогрузились и запущена процедура добавления элемента (кнопки, чего угодно там) для текущей вкладки (главный фрейм как я полагаю сюда относится), это влияет на добавление элемента в целевой блок. То есть, до тех пор пока не прогрузились остальные ресурсы документ сбрасывается, инициализируется заново и все действия по добавлению сводятся на нет и я это вижу, что элемент исчезает. Как-то всё очень запутанно, с другой стороны, почему составные фреймы влияют на тот, куда они входят. У меня, как видно из кода на 62-й строке идёт проверка окончательной загрузки вкладки. Остальные фреймы, которые в неё входят загружаются следом (исходя из вывода в консоль). Пока не знаю что с этим делать и как это контролировать...
0
|
||||||
| 12.02.2025, 02:06 | |
|
Помогаю со студенческими работами здесь
11
Воспроизведение звука при нажатии на клавиши, при работе программы в фоновом режиме Встраиваемый код и расширения chrome Самопроизвольный запуск Word 2010 в фоновом режиме при загрузке Windows 7
Воспроизвести звук в фоновом режиме. Приложение для ходьбы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 25.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 25.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2.
Номеклатура. . .
|