Примеры расширений
Чтобы проиллюстрировать, как использовать API WebExtension, мы поддерживаем репозиторий с примерами расширений по адресу https://github.com/mdn/webextensions-examples. Эта статья описывает, как запустить эти примеры, и перечисляет примеры вместе с API WebExtension, которые они демонстрируют.
Эти примеры работают в Firefox Nightly: большинство работают в более ранних версиях Firefox, но проверьте ключ strict_min_version в файле manifest.json расширения, чтобы убедиться.
Предупреждение: Некоторые примеры работают только на определённых доменах или страницах. Подробности любых ограничений приведены в файле readme каждого примера. По умолчанию ни один из примеров не работает в окнах приватного просмотра, см. Расширения в режиме приватного просмотра для получения подробностей.
Чтобы попробовать эти примеры, клонируйте репозиторий, а затем:
- загрузите расширение из его исходной папки, используя функцию Загрузка временного дополнения. Расширение будет загружено до перезагрузки Firefox.
- откройте папку с исходным кодом расширения в командной строке и используйте
web-extдля запуска расширения. Расширение будет загружено до перезагрузки Firefox. - в Firefox используйте Файл > Открыть файл и найдите пример в папке
build. Папкаbuildсодержит собранные и подписанные версии всех примеров. Это постоянно установит пример.
Предупреждение: Пожалуйста, не отправляйте эти примеры WebExtension на addons.mozilla.org (AMO); вам не нужно подписывать add-on WebExtension примеры для их запуска. Следуйте шагам выше.
Если вы хотите внести вклад в репозиторий, отправьте нам запрос на включение.
| Имя | Описание | JavaScript API |
|---|---|---|
| annotate-page | Отображает боковую панель, которая позволяет делать заметки на веб-страницах. |
storage.localtabs.onActivatedtabs.onUpdatedtabs.querytabs.Tabwindows.getCurrentwindows.Window |
| apply-css | Добавляет действие на панели инструментов. Нажав на кнопку, применяет красную границу с помощью внедренного CSS. Нажав на кнопку снова, удаляет CSS. |
pageAction.getTitlepageAction.onClickedpageAction.setIconpageAction.setTitlepageAction.showtabs.insertCSStabs.onUpdatedtabs.querytabs.removeCSStabs.Tab |
| beastify | Добавляет значок действия браузера на панель инструментов. Нажав на кнопку, выбирает зверя. Затем содержимое тела активной вкладки заменяется изображением выбранного зверя. |
extension.getURLruntime.onMessagetabs.executeScripttabs.insertCSStabs.querytabs.removeCSStabs.sendMessagetabs.Tab |
| bookmark-it | Добавляет кнопку закладки на панель инструментов. Нажав на кнопку, переключает закладку для текущей страницы. |
bookmarks.createbookmarks.onCreatedbookmarks.onRemovedbookmarks.removebookmarks.searchbrowserAction.onClickedbrowserAction.setIconbrowserAction.setTitletabs.onActivatedtabs.onUpdatedtabs.querytabs.Tabwindows.onFocusChanged |
| borderify | Добавляет твёрдую красную границу ко всем веб-страницам, соответствующим mozilla.org. | |
| chill-out | Отображает действие на странице после периода бездействия. При щелчке по действию на странице показываются GIF-картинки с кошками. |
alarms.clearAllalarms.createalarms.onAlarmpageAction.hidepageAction.onClickedpageAction.showtabs.gettabs.onActivatedtabs.onUpdatedtabs.querytabs.update |
| commands | Демонстрирует использование API команд для настройки сочетания клавиш. Созданное сочетание клавиш доступно с помощью Ctrl+Shift+U (Command+Shift+U на Mac). |
commands.getAllcommands.onCommandcommands.resetcommands.updatetabs.create |
| content-script-register | Иллюстрирует, как расширение может регистрировать скрипты содержимого с сопоставлением URL во время выполнения. |
contentScripts.registerruntime.onMessageruntime.sendMessage |
| context-menu-copy-link-with-types | Добавляет элемент контекстного меню для ссылок, чтобы скопировать ссылку в буфер обмена как обычный текст и ссылку в формате rich HTML. |
contextMenus.createcontextMenus.onClickedtabs.executeScript |
| contextual-identities | Список, создание и удаление контекстуальных идентификаторов. |
contextualIdentities.querytabs.createtabs.querytabs.remove |
| cookie-bg-picker | Позволяет пользователю настраивать цвет фона и узор на сайтах, которые они посещают, а также сохраняет их настройки через cookie, повторно применяя их при повторном посещении сайта, который они ранее настраивали. |
cookies.getcookies.onChangedcookies.removecookies.setextension.getURLruntime.onMessagetabs.onActivatedtabs.onUpdatedtabs.querytabs.Tabtabs.sendMessage |
| devtools-panels | Демонстрирует некоторые из API инструментов разработчика. |
devtools.inspectedWindowdevtools.panelsruntime.getURLruntime.onMessageruntime.sendMessagetabs.executeScript |
| discogs-search | Демонстрирует добавление пользовательского поискового движка с ключом chrome_settings_overrides. | |
| dynamic-theme | Пример динамической темы |
alarms.createalarms.onAlarmtheme.update |
| emoji-substitution | Заменяет слова эмодзи. | |
| eslint-example | Демонстрирует, как настроить расширение с помощью eslint. | |
| export-helpers | Демонстрирует, как использовать вспомогательные функции экспорта, такие как cloneInto, для обмена объектами со скриптами страницы. |
notifications.createruntime.onMessageruntime.sendMessage |
| favourite-colour | Пример страницы настроек, позволяющей хранить ваш любимый цвет. |
browserAction.onClickedruntime.openOptionsPagestorage.managedstorage.sync |
| find-across-tabs | Демонстрация API поиска. |
browserAction.onClickedextension.getBackgroundPagefind.findfind.highlightResultsruntime.getURLruntime.onMessageruntime.sendMessagetabs.createtabs.querytabs.Tab |
| firefox-code-search | Демонстрация использования API omnibox. |
omnibox.onInputChangedomnibox.onInputEnteredomnibox.setDefaultSuggestiontabs.createtabs.update |
| forget-it | Демонстрирует использование API browsingData. |
browserAction.onClickedbrowsingData.removenotifications.createstorage.local |
| google-userinfo | Демонстрирует использование API identity. |
browserAction.onClickedidentity.getRedirectURLidentity.launchWebAuthFlownotifications.create |
| history-deleter | Демонстрация API history: удаляет элементы истории для заданного домена |
history.deleteUrlhistory.searchpageAction.showtabs.onUpdatedtabs.query |
| http-response | Демонстрирует, как переписывать HTTP-ответы с помощью API webRequest.filterResponseData(). |
webRequest.filterResponseDatawebRequest.onBeforeRequest |
| imagify | Используя боковую панель, демонстрирует использование выбора файла и перетаскивания. Скрипт контента заменяет содержимое текущей страницы выбранным изображением. |
extension.getURLruntime.onMessagetabs.executeScripttabs.querytabs.sendMessage |
| latest-download | Показывает последний загруженный элемент и позволяет его открыть или удалить. |
downloads.erasedownloads.getFileIcondownloads.opendownloads.removeFiledownloads.search |
| list-cookies | Это расширение отображает cookie в активной вкладке. |
cookies.getAlltabs.query |
| menu-accesskey-visible | Демонстрирует, как настроить однобуквенный доступ к элементу меню. |
i18n.getMessagemenus.updatemenus.createmenus.onClicked |
| menu-demo | Демонстрирует добавление и изменение элементов меню с помощью API menus. |
i18n.getMessagemenus.createmenus.onClickedmenus.removemenus.updateruntime.lastErrortabs.executeScript |
| menu-labelled-open | Показывает, как расширение может прослушивать отображение меню и добавлять, удалять или обновлять элементы меню. |
menus.createmenus.onClickedmenus.onShownmenus.refreshmenus.updatetabs.update |
| menu-remove-element | Показывает, как обнаружить элемент страницы в позиции курсора и удалить этот элемент или родительский элемент со страницы. В этом примере используется полифилл, иллюстрируя кроссбраузерное развитие расширений. |
menus.createmenus.onClickedmenus.getTargetElementpageAction.openPopuppageAction.showtabs.executeScript |
| menu-search | Демонстрирует, как получить список поисковых систем и отправить запрос поиска, используя сведения о поисковой системе, добавленные в контекстное меню для выбранного текста. |
search.searchsearch.getmenus.createmenus.onClicked |
| mocha-client-tests | Этот пример демонстрирует два способа тестирования расширения: выполнение тестов внутри расширения и выполнение тестов из командной строки с использованием Karma. |
runtime.onMessageruntime.sendMessage |
| native-messaging | Пример native messaging, включая приложение Python и расширение, которые обмениваются сообщениями с ним. |
browserAction.onClickedruntime.connectNative |
| navigation-stats | Демонстрация API webNavigation, показывающая основные статистические данные о посещенных вами страницах. |
storage.localwebNavigation.onCommittedwebNavigation.onCompleted |
| notify-link-clicks-i18n | Показывает локализованное уведомление при нажатии пользователем на ссылки. |
extension.getURLi18n.getMessagenotifications.createruntime.onMessageruntime.sendMessage |
| open-my-page-button | Добавляет значок действия браузера в панель инструментов. При щелчке значка действия расширение открывает страницу, которая была упакована вместе с ним. |
browserAction.onClickedtabs.create |
| page-to-extension-messaging | Демонстрирует, как веб-страница и скрипт контента могут обмениваться сообщениями. Посетите https://mdn.github.io/webextensions-examples/content-script-page-script-messaging.html для демонстрации. | |
| permissions | Демонстрирует необязательные разрешения с помощью API permissions. |
browserAction.onClickedpermissions.getAllpermissions.removepermissions.requestruntime.getURLtabs.create |
| private-browsing-theme | Пример динамической темы: устанавливает тёмную тему для частных окон. |
theme.resettheme.updatewindows.getAllwindows.onCreated |
| proxy-blocker | Использует API proxy для блокировки запросов к хостам, указанным в списке. |
extension.getURLproxy.onRequestproxy.onErrorstorage.localstorage.onChanged |
| quicknote | Позволяет пользователю быстро создавать заметки, нажав кнопку и введя текст в появившемся всплывающем окне. Заметки сохраняются в хранилище. |
storage.local |
| root-cert-stats | Показывает, как получить сведения о TLS-соединении запроса. |
webRequest.getSecurityInfo |
| runtime-examples | Демонстрация различных API выполнения. |
browserAction.onClickednotifications.createruntime.getManifestruntime.onInstalledruntime.reload |
| selection-to-clipboard | Демонстрация записи в буфер обмена из скрипта содержимого. | |
| session-state | Демонстрация получения состояния, определённого расширением, из восстановленных вкладок. |
menus.createmenus.onClickedsessions.getTabValuesessions.setTabValuetabs.insertCSStabs.onCreatedtabs.onUpdatedtabs.query |
| store-collected-images | Демонстрация использования библиотеки idb-file-storage для хранения и обработки файлов в расширении. |
browserAction.onClickedcontextMenus.createcontextMenus.onClickedruntime.onMessageruntime.sendMessagetabs.createwindows.create |
| stored-credentials | Выполнение базовой аутентификации, используя сохранённые учётные данные. |
storage.localwebRequest.onAuthRequiredwebRequest.onCompletedwebRequest.onErrorOccurred |
| tabs-tabs-tabs | Демонстрация управления вкладками: открытие, закрытие, перемещение, масштабирование. |
browserAction.setBadgeBackgroundColorbrowserAction.setBadgeTexttabs.createtabs.duplicatetabs.getZoomtabs.movetabs.onCreatedtabs.onMovedtabs.onRemovedtabs.querytabs.reloadtabs.removetabs.setZoomtabs.Tabtabs.update |
| theme-integrated-sidebar | Боковая панель, интегрированная с текущей темой. |
theme.getCurrenttheme.onUpdatedwindows.getCurrent |
| theme-switcher | Пример использования API управления темами. |
management.getAllmanagement.setEnabled |
| themes | Коллекция тем, иллюстрирующая:
| |
| top-sites | Демонстрация API topSites. |
topSites.get |
| user-agent-rewriter | Демонстрация использования API webRequest для переписывания заголовка User-Agent HTTP. |
extension.getBackgroundPagewebRequest.onBeforeSendHeaders |
| user-script-register | Иллюстрация того, как расширение может регистрировать пользовательские скрипты, соответствующие URL, во время выполнения. |
userScripts.registerruntime.onMessageruntime.sendMessage |
| webpack-modules | Демонстрация использования webpack для упаковки модулей npm в расширение. |
runtime.onMessageruntime.sendMessage |
| window-manipulator | Демонстрация манипулирования окнами: открытие, закрытие, изменение размеров. |
windows.createwindows.getAllwindows.getCurrentwindows.removewindows.updatewindows.Window |
| open-irc-links | Демонстрация использования обработчиков протоколов. |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Examples