--- title: JavaScript APIs slug: Mozilla/Add-ons/WebExtensions/API tags: - Web-расширение - Расширение translation_of: Mozilla/Add-ons/WebExtensions/API ---
WebExtension JavaScript API может быть использован в фоновых скриптах расширения, а так же в любых других документах, поставляемых вместе с расширением, таких как документы во всплывающих окнах после нажатия кнопок активации расширения browser action на панели инструментов или page action в строке адреса, боковой панели, страницах настроек или новых открытых вкладках. Некоторые из этих API могут быть доступны на встраиваемых в страницу скриптах (см. список в руководстве по встраиваемым скриптам).
Для использования отдельных более продвинутых API, необходимо запросить разрешения в manifest.json вашего дополнения.
Вы можете получить доступ к API, используя пространство имён browser:
function logTabs(tabs) {
console.log(tabs);
}
browser.tabs.query({currentWindow: true}, logTabs);
Многие API выполняются асинхронно, возвращая Promise:
function logCookie(c) {
console.log(c);
}
function logError(e) {
console.error(e);
}
var setCookie = browser.cookies.set(
{url: "/"}
);
setCookie.then(logCookie, logError);
chrome вместо browser и колбэки для асинхронных функций вместо промисов.
Для поддержки портирования, реализация Firefox WebExtensions API так же поддерживает пространство имён chrome и использование колбэков. Это позволяет в большинстве случаев не изменять код, изначально написанный для Chrome.
Mozilla так же предоставляет полифил, который позволяет коду, использующему browser и промисы, работать без изменений в Chrome: https://github.com/mozilla/webextension-polyfill.
Microsoft Edge использует пространство имён browser, но ещё не поддерживает, основанный на промисах асинхронный API. В Edge на данный момент асинхронные вызовы API должны использовать колбэки.
Не все браузеры поддерживают все API: детали см. Browser support for JavaScript APIs.