manifest.json
Примечание: Эта статья описывает manifest.json для веб-расширений. Если вы ищете информацию о manifest.json в PWAs, ознакомьтесь со статьей Веб-приложение Manifest.
Файл manifest.json — единственный файл, который обязательно должен содержать каждое расширение, использующее API WebExtension.
Используя manifest.json, вы указываете основные метаданные о своём расширении, такие как название и версия, а также можете указать аспекты функциональности вашего расширения (например, фоновые скрипты, скрипты содержимого и действия браузера).
Это файл в формате JSON, с одним исключением: допускается использование комментариев в стиле «//».
Список ключей manifest.json
Вот manifest.json ключи; эти ключи доступны в Manifest V2 и выше, если не указано иное:
- action (Manifest V3 и выше)
- автор
- фон
- browser_action (только Manifest V2)
- настройки, специфичные для браузера
- настройки Chrome
- замены URL Chrome
- команды
- скрипты содержимого
- политика безопасности содержимого
- декларативный сетевой запрос
- язык по умолчанию
- описание
- разработчик
- страница devtools
- словари
- внешне соединяемый
- URL домашней страницы
- разрешения хоста (Manifest V3 и выше)
- иконки
- инкогнито
- версия манифеста
- название
- активировать режим офлайн
- omnibox
- дополнительные разрешения
- страница настроек
- интерфейс настроек
- действие на странице (только Manifest V2 в Chrome)
- разрешения
- обработчики протоколов
- короткое имя
- действие в боковой панели
- хранилище
- тема
- эксперимент с темой
- пользовательские скрипты (только Manifest V2)
- версия
- имя версии
- веб-доступные ресурсы
Примечания о ключах manifest.json
-
"manifest_version","version", и"name"— единственные обязательные ключи. -
"default_locale"должен быть присутствовать, если присутствует директория «_locales», и должен отсутствовать в противном случае. -
"browser_specific_settings"не поддерживается в Google Chrome.
Доступ к ключам manifest.json во время выполнения
Вы можете получить доступ к манифесту вашего расширения из JavaScript расширения, используя функцию runtime.getManifest():
browser.runtime.getManifest().version;
Пример
Блок ниже показывает базовый синтаксис для некоторых общих ключей манифеста.
Примечание: Это не предназначено для использования в качестве примера для копирования-вставки. Выбор необходимых ключей зависит от расширения, которое вы разрабатываете.
Для получения полных примеров расширений см. Примеры расширений.
{ "browser_specific_settings": { "gecko": { "id": "addon@example.com", "strict_min_version": "42.0" } }, "background": { "scripts": ["jquery.js", "my-background.js"], }, "browser_action": { "default_icon": { "19": "button/geo-19.png", "38": "button/geo-38.png" }, "default_title": "Whereami?", "default_popup": "popup/geo.html" }, "commands": { "toggle-feature": { "suggested_key": { "default": "Ctrl+Shift+Y", "linux": "Ctrl+Shift+U" }, "description": "Send a 'toggle-feature' event" } }, "content_security_policy": "script-src 'self' https://example.com; object-src 'self'", "content_scripts": [ { "exclude_matches": ["*://developer.mozilla.org/*"], "matches": ["*://*.mozilla.org/*"], "js": ["borderify.js"] } ], "default_locale": "en", "description": "…", "icons": { "48": "icon.png", "96": "icon@2x.png" }, "manifest_version": 2, "name": "…", "page_action": { "default_icon": { "19": "button/geo-19.png", "38": "button/geo-38.png" }, "default_title": "Whereami?", "default_popup": "popup/geo.html" }, "permissions": ["webNavigation"], "version": "0.1", "user_scripts": { "api_script": "apiscript.js", }, "web_accessible_resources": ["images/my-image.png"] }
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | |
action |
88 | 88 | 109 | ? | 74 | 15.4 | ? | ? | 109 | ? | 15.4 | ? |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
author |
Да | 14Это свойство обязательно. |
52 | ? | Да | 14Не отображается в настройках расширений Safari. |
? | ? | 52 | ? | 15Не отображается в настройках расширений Safari. |
? |
background |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
browser_action |
Да["Доступно только в Manifest V2.", "Если расширение определяет действие в браузере, оно не может также определять действие на странице."] |
14Доступно только в Manifest V2. |
48Доступно только в Manifest V2. |
? | Да["Доступно только в Manifest V2.", "Если расширение определяет действие в браузере, оно не может также определять действие на странице."] |
14["Доступно только в Manifest V2.", "Если расширение определяет действие в браузере, оно не может также определять действие на странице."] |
? | ? | 55Доступно только в Manifest V2. |
? | 15["Доступно только в Manifest V2.", "Если расширение определяет действие в браузере, оно не может также определять действие на странице."] |
? |
browser_specific_settings |
Нет | 15–79 | 42До версии Firefox 48 это свойство было обязательным. |
? | Нет | 14Поддерживаетstrict_min_version и strict_max_version в блоке safari. |
? | ? | 42До версии Firefox 48 это свойство было обязательным. |
? | 15Поддерживаетstrict_min_version и strict_max_version в блоке safari. |
? |
chrome_settings_overrides |
Да | 79 | 55 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
chrome_url_overrides |
Да | 79 | 54 | ? | Нет | 1514.1 | ? | ? | Нет | ? | 15 | ? |
commands |
Да | 79 | 48 | ? | Да | 14Изменение сочетания клавиш для команды не поддерживается. |
? | ? | Нет | ? | 15Изменение сочетания клавиш для команды не поддерживается. |
? |
content_scripts |
ДаСкрипты контента не применяются к вкладкам, уже открытым при загрузке расширения. |
14 | 48 | ? | ДаСкрипты контента не применяются к вкладкам, уже открытым при загрузке расширения. |
14Скрипты контента не применяются к вкладкам, пока пользователь не предоставит разрешение через всплывающее окно доступа расширения в панели инструментов. |
? | ? | 48 | ? | 15Скрипты контента не применяются к вкладкам, пока пользователь не предоставит разрешение через всплывающее окно доступа расширения. |
? |
content_security_policy |
ДаДо Chrome 110 директиваobject-src была обязательной с безопасным источником. С Chrome 111 директива object-src является необязательной. |
ДаДо Edge 110 директиваobject-src была обязательной с безопасным источником. С Edge 111 директива object-src является необязательной. |
48["Firefox не поддерживает 'http://127.0.0.1' или 'http://localhost' как источники скриптов: они должны быть доступны по HTTPS.", "До Firefox 105 директиваobject-src была обязательной с безопасным источником. С Firefox 106 директива object-src является необязательной."] |
? | ДаДо Opera 96 директиваobject-src была обязательной с безопасным источником. С Opera 97 директива object-src является необязательной. |
14Нет необходимости включать директивуobject-src. |
? | ? | Нет | ? | 15Нет необходимости включать директивуobject-src. |
? |
declarative_net_request |
84 | 84 | Нет | ? | 70 | 15 | ? | ? | Нет | ? | 15 | ? |
default_locale |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
description |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
developer |
Нет | Нет | 52 | ? | Да | Нет | ? | ? | 52 | ? | Нет | ? |
devtools_page |
Да | 79 | 54 | ? | Да | 16 | ? | ? | Нет | ? | Нет | ? |
externally_connectable |
Да | 79 | НетСм. ошибку 1319168. |
? | Да | 15.4Safari поддерживает только свойствоmatches. |
? | ? | Нет | ? | 15.4Safari поддерживает только свойствоmatches. |
? |
homepage_url |
Да | 79 | 48 | ? | Да | 14Не отображается в настройках расширений Safari. |
? | ? | 48 | ? | 15Не отображается в настройках расширений Safari. |
? |
host_permissions |
88Доступно в Manifest V3 или более поздних версиях. |
88Доступно в Manifest V3 или более поздних версиях. |
109Доступно в Manifest V3 или более поздних версиях. |
? | 74Доступно в Manifest V3 или более поздних версиях. |
15.4Доступно в Manifest V3 или более поздних версиях. |
? | ? | 109Доступно в Manifest V3 или более поздних версиях. |
? | 15.4Доступно в Manifest V3 или более поздних версиях. |
? |
icons |
Да | Да | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
incognito |
Да | ≤18 | 48 | ? | Да | Нет | ? | ? | 48 | ? | Нет | ? |
manifest_version |
4 | 14 | 48 | ? | 15 | 14 | ? | ? | 48 | ? | 15 | ? |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
name |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
offline_enabled |
Да | 79 | Нет | ? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
omnibox |
Да | 79 | 52 | ? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
optional_permissions |
Да | 79 | 55 | ? | Да | 14 | ? | ? | 55 | ? | 15 | ? |
options_page |
Да | 14 | Нет | ? | 15 | 14 | ? | ? | Нет | ? | 15 | ? |
options_ui |
40 | 79 | 48 | ? | 27 | 14 | ? | ? | 57 | ? | 15 | ? |
page_action |
Да["С Chrome 49, действия страницы отображаются в панели инструментов, а не в адресной строке.", "Если расширение определяет действие страницы, оно не может определить действие браузера."] |
14 | 48 | ? | ДаЕсли расширение определяет действие страницы, оно не может определить действие браузера. |
14Если расширение определяет действие страницы, оно не может определить действие браузера. |
? | ? | Да | ? | 15Если расширение определяет действие страницы, оно не может определить действие браузера. |
? |
permissions |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
protocol_handlers |
Нет | Нет | 54 | ? | Нет | Нет | ? | ? | 54 | ? | Нет | ? |
short_name |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
sidebar_action |
Нет | Нет | 54 | ? | 30 | Нет | ? | ? | Нет | ? | Нет | ? |
storage |
Да | 79 | Нет | ? | Нет | 14 | ? | ? | Нет | ? | 15 | ? |
theme |
Да | 79 | 55 | ? | Нет | Нет | ? | ? | Да | ? | Нет | ? |
theme_experiment |
Нет | Нет | 63 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
user_scripts |
Да | 79 | 68 | ? | Нет | Нет | ? | ? | 68 | ? | Нет | ? |
version |
ДаВерсии Chrome являются подмножеством версий Firefox. |
14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
version_name |
Да | 79 | Нет | ? | Да | 14 | ? | ? | Нет | ? | 15 | ? |
web_accessible_resources |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
Для полного обзора всех ключей манифеста и их подключаемых ключей, см. полную таблицу совместимости манифеста.json с браузерами.
См. также
permissions API JavaScript
© 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/manifest.json