Изменить содержимое диалогового окна загрузки Firefox из комплекта дополнений

Я хотел бы иметь возможность добавить параметр в диалоговое окно загрузки, которое появляется в Firefox при запуске загрузки файла. Можно ли это сделать с помощью нового дополнения SDK или мне нужно делать это по-старому?

edit: Очевидно, что если выбрана новая опция, мне нужен способ узнать ее и выполнить код на ее основе.


person CAFxX    schedule 07.10.2011    source источник


Ответы (3)


Для этого вам следует использовать оверлеи XUL. Я предполагаю, что диалог, о котором вы говорите, это chrome://mozapps/content/downloads/downloads.xul - менеджер загрузок. Насколько мне известно, это невозможно с помощью Add-on SDK, он предоставляет только наиболее распространенные точки интеграции пользовательского интерфейса. Вы можете создать традиционное расширение, однако оно может накладываться на любой диалог.

person Wladimir Palant    schedule 07.10.2011
comment
Нет, я не имею в виду диспетчер загрузок — я говорил о том, что предлагается открыть с помощью .../Сохранить в ..., но я думаю, что это не имеет никакого значения. Разве нельзя было бы прослушивать какое-то событие и вводить содержимое каждый раз, когда отображается диалоговое окно? - person CAFxX; 07.10.2011
comment
@CAFxX: Хорошо, тогда это будет chrome://mozapps/content/downloads/unknownContentType.xul. Вводить контент вручную было бы пустой тратой времени, оверлеи применяются автоматически, если они указаны в манифесте Chrome. - person Wladimir Palant; 07.10.2011
comment
Да, но внедрение контента может работать и при использовании надстройки SDK, верно? - person CAFxX; 07.10.2011
comment
@CAFxX: Нет, SDK вставляет код только на страницы контента. Он не предназначен для расширения пользовательского интерфейса браузера сложными способами, предоставляется только набор возможных сценариев. - person Wladimir Palant; 07.10.2011
comment
На самом деле вы можете расширить пользовательский интерфейс браузера с помощью addon sdk, это не так сложно сделать, если вы уже знаете старые способы. Что хорошо в addon sdk, так это то, что когда кто-то что-то делает, у него появляются модули, которые другие могут использовать повторно. - person erikvold; 09.10.2011

Насколько я знаю, не существует существующего модуля, который поможет вам, поэтому вам придется создать его или подождать, пока его сделает кто-то другой. Но основная идея расширения пользовательского интерфейса браузера проста и выглядит следующим образом:

  1. Когда аддон загружен, просканируйте открытые окна того типа, который вы хотите расширить.
  2. расширить открытые окна, добавив на страницу элементы xul и javascript.
  3. слушайте вновь открытые окна и проверяйте, являются ли они тем типом, который вы ищете, когда они открываются
  4. расширять недавно открытые окна, пока ваш аддон активен
  5. Убирайте за собой, когда окна закрываются или когда ваш аддон отключен/удален.

Последний шаг является самым важным и никогда не имеет значения для старых школьных расширений, которые не допускали перезапуска.

Некоторые из встроенных модулей, на которые вы можете посмотреть, это модуль виджета, модуль контекстного меню и модуль горячих клавиш, все это вы можете найти здесь.

Я сам сделал пару: модуль кнопки панели инструментов, модуль xulkeys, модуль элементов меню и несколько других, все это вы можете найти здесь.

person erikvold    schedule 09.10.2011

Недавно я написал расширение, делающее то же самое. Расширение начальной загрузки, не использующее addon-sdk.

Я уже отправил его на AMO, но жду обзора

https://addons.mozilla.org/en-US/firefox/addon/download-dialog-tweak/

И исходный код

https://github.com/muzuiget/download_dialog_tweak

person muzuiget    schedule 10.04.2013