Расширения, темы и приложения — это просто пакеты ресурсов, заключенные в файл manifest.json , описывающий содержимое пакета. Формат этого файла в целом стабилен, но иногда необходимо вносить критические изменения для решения важных проблем. Разработчики должны указать, для какой версии спецификации манифеста предназначен их пакет, установив ключ manifest_version в своих манифестах.
Текущая версия
В настоящее время разработчикам следует указать 'manifest_version': 2 :
{
...,
"manifest_version": 2,
...
}
Манифест версии 1 устарел в Chrome 18, и его поддержка будет прекращена в соответствии со следующим графиком.
График поддержки манифеста версии 1
август 2012 г.
- Интернет-магазин заблокирует создание новых расширений манифеста версии 1.
- Интернет-магазин позволит обновлять существующие расширения манифеста версии 1.
Март 2013 г.
- Интернет-магазин заблокирует обновления расширений манифеста версии 1 4 марта 2013 г.
апрель 2013 г.
- Бета-версия Chrome 27 перестанет упаковывать расширения манифеста версии 1 (или загружать их для разработки).
июнь 2013 г.
- Интернет-магазин удалит расширения манифеста версии 1 со стены, результатов поиска и страниц категорий.
- Всем разработчикам, чьи расширения манифеста версии 1 все еще находятся в магазине, будут отправлены электронные письма с напоминанием о том, что эти расширения будут отменены, и инструкциями по обновлению.
Сентябрь 2013 г.
- Интернет-магазин отменит публикацию всех расширений манифеста версии 1.
- Электронные письма с окончательным уведомлением будут отправлены разработчикам, чьи расширения манифеста версии 1 все еще находятся в Интернет-магазине.
- Chrome продолжит загружать и запускать установленные расширения манифеста версии 1.
Январь 2014 г.
- Chrome перестанет загружать или запускать расширения манифеста версии 1.
Изменения между версией 1 и 2
- Политика безопасности контента установлена на
`script-src 'self'; object-src 'self';по умолчанию. Это имеет различные последствия для разработчиков, подробно описанные в документацииcontent_security_policy. - Ресурсы пакета больше не доступны по умолчанию для внешних веб-сайтов (в виде
srcизображения или тегаscript). Если вы хотите, чтобы веб-сайт мог загружать ресурс, содержащийся в вашем пакете, вам необходимо явно внести его в белый список с помощью атрибута манифестаweb_accessible_resources. Это особенно актуально для расширений, которые создают интерфейс на веб-сайте с помощью сценариев внедрения контента. - Свойство
background_pageбыло заменено свойствомbackground, которое содержит либоscripts, либо свойствоpage. Подробности доступны в документации по страницам событий . Изменения действий браузера:
- Ключ
browser_actionsв манифесте и APIchrome.browserActionsисчезли. Вместо этого используйте единственное имяbrowser_actionиchrome.browserAction. - Свойство
iconsbrowser_actionбыло удалено. Вместо этого используйте свойствоdefault_iconили браузерAction.setIcon . - Свойство
namebrowser_actionбыло удалено. Вместо этого используйте свойствоdefault_titleили браузерAction.setTitle . - Свойство
popupbrowser_actionбыло удалено. Вместо этого используйте свойствоdefault_popupили браузерAction.setPopup . - Свойство
default_popupbrowser_actionбольше нельзя указывать как объект. Это должна быть строка.
- Ключ
Изменения действий на странице:
- Ключ
page_actionsв манифесте и APIchrome.pageActionsисчезли. Вместо этого используйте единственное числоpage_actionиchrome.pageAction. - Свойство
iconsдляpage_actionбыло удалено. Вместо этого используйте свойствоdefault_iconили pageAction.setIcon . - Свойство
nameдляpage_actionбыло удалено. Вместо этого используйте свойствоdefault_titleили pageAction.setTitle . - Свойство
popupдляpage_actionбыло удалено. Вместо этого используйте свойствоdefault_popupили pageAction.setPopup . - Свойство
default_popupдляpage_actionбольше нельзя указывать как объект. Это должна быть строка.
- Ключ
API
chrome.selfбыл удален. Вместо этого используйтеchrome.extension.chrome.extension.getTabContentses(!!!) иchrome.extension.getExtensionTabsисчезли. Вместо этого используйте расширение.getViews .Port.tabпропал. Вместо этого используйте runtime.Port .