LINUX.ORG.RU

firefox addon - перехват управления урлами и вкладками

 ,


0

1

Возможно ли такое? Хочу себе сделать, но лень разбираться, т.к. не уверен что это вообще штатно возможно. Может кто видел аддоны которые таким занимаются? (чтоб точно знать что можно, ну и смотреть их код как пример)

Речь идёт про перехват любых открываний урлов, как в текущей вкладке, так и в новой, и опциональное выполнение вместо дефолтного действия каких-то своих кастомных. Именно открывание урлов для просмотра (т.е. в странице всякие картинки или даже ифреймы - это пофиг, пусть открываются дефолтным способом). По итогу не должно быть способа сделать ситуацию, когда хотя бы одна из активных вкладок создана без ведома и разрешения аддона.

★★★★★

Последнее исправление: firkax (всего исправлений: 2)

Возможно. temporary containers работает таким образом. вплоть до того что при переходе на новый урл он может закрыть текущую вкладку, открыть новую и в ней открыть этот урл.

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

https://github.com/stoically/temporary-containers/blob/main/src/contentscript.ts

Весьма костыльно :( ну видимо это единственный способ. Он тупо перехватывает левый клик по ссылке + ждёт 1 тик на случай если сайтовые скрипты меняют линк при клике. События «открыть урл» для перехвата у файрфокса видимо нет. Правый клик придётся обрабатывать отдельно, скриптовые открывания доп. окон и смены урла видимо ещё отдельно (если это вообще возможно) , вставку урла в адресную строку вручную тоже отдельно. А может там ещё какие-то способы открыть вкладку/сменить урл текущей есть.

Хотя https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manife... возможно можно инжектить скрипт в document_start, надо будет проверить, будет ли страница грузиться дальше, пока этот скрипт не отдал управление. Но первый http запрос видимо он послать всё-таки успеет.

А вот тут ещё https://github.com/stoically/temporary-containers/blob/main/src/background/ev... всякие onBeforeRequest, onBeforeSendHeaders судя по названиям это то что нужно.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 2)