Spec-Zone.ru › Web Extensions

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 ? Нет ?
END_OF_DOCUMENT_MARKER
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API