JavaScript интерфейсы веб API

Этот раздел посвящён Web API — программным интерфейсам веб-платформы (англ. application programming interface). Они позволяют работать с документом, событиями, сетью, хранилищами, мультимедиа и возможностями устройства.

Каталог объединяет основные направления, отдельные интерфейсы и миксины. Это расширяемая подборка, а не полный перечень всех интерфейсов веб-платформы. Ссылки ведут к существующим статьям; позиции без ссылки пока сопровождаются кратким описанием.

Описание интерфейсов (объектов)

Интерфейс описывает свойства и методы объектов. Строки с названием API, например Fetch API, ведут к обзору группы связанных интерфейсов и их совместного применения. Миксин добавляет общие возможности нескольким интерфейсам. Методы, свойства и события подробно рассматриваются в соответствующих статьях.

Документ и дерево DOM

Создание, поиск и изменение узлов страницы, работа с коллекциями и наблюдение за изменениями.

Документ и дерево DOM: интерфейсы и API
Интерфейс / API Описание
Document Веб-страница, загруженная в браузер, и точка входа в её дерево DOM. Содержит общие свойства и методы документа: поиск и создание элементов, сведения о странице и её состоянии.
Node Базовый интерфейс всех узлов дерева документа, включая сам Document, элементы, текст и комментарии. Наследует EventTarget. Содержит свойства и методы для перехода между узлами, вставки, удаления и клонирования.
Element Общие свойства и методы всех элементов документа: атрибуты, классы, поиск потомков, размеры и положение. Элементы HTML, SVG и MathML расширяют его своими интерфейсами.
HTMLElement Общие свойства и поведение HTML-элементов. Конкретные элементы, например формы и поля ввода, имеют дополнительные интерфейсы.
HTMLFormElement Форма: доступ к её полям, проверка ограничений, сброс и отправка. Отправка через submit() не вызывает событие submit, а requestSubmit() вызывает.
HTMLInputElement Поле ввода: значение, состояние флажка, выбранные файлы и проверка введённых данных. Набор доступных свойств зависит от атрибута type.
HTMLTemplateElement Шаблон разметки, который не отображается. Его содержимое доступно как DocumentFragment в свойстве content и копируется перед вставкой.
DocumentFragment Фрагмент дерева без собственного родительского узла. Позволяет подготовить группу узлов перед вставкой в документ.
ShadowRoot Корень теневого дерева компонента. Предоставляет доступ к его содержимому; доступ извне зависит от режима создания.
CharacterData Базовый интерфейс узлов с текстовыми данными, включая текст и комментарии.
Text Текстовый узел DOM. Хранит текст отдельно от разметки элемента.
Attr Атрибут элемента с именем и значением. Не является дочерним узлом элемента.
NodeList Коллекция узлов. В зависимости от источника может обновляться вместе с DOM или быть статическим снимком.
HTMLCollection Живая коллекция элементов: состав обновляется при изменении соответствующего дерева.
DOMTokenList Набор строковых токенов, например классов элемента в classList.
MutationObserver Наблюдает за изменениями дочерних узлов, атрибутов и текстовых данных. Передаёт записи изменений в обработчик.
Range Диапазон между двумя граничными точками DOM для чтения и изменения содержимого.
Selection Выделение текста пользователем или курсор ввода; возвращается методом getSelection(). Состоит из одного или нескольких диапазонов Range.
DOMParser Разбирает строку HTML или XML в отдельный документ. Скрипты из разобранной разметки не выполняются; обратное преобразование в строку выполняет XMLSerializer.
DOM API Обзор дерева документа, связей между узлами, коллекций и операций над ними.

Общие возможности узлов: миксины

Миксины объединяют члены нескольких интерфейсов. У них нет отдельного конструктора; их методы и свойства доступны на реализующих их объектах.

Общие возможности узлов: миксины: интерфейсы и API
Интерфейс / API Описание
ParentNode Миксин ParentNode содержит методы и свойства, которые являются общими для всех типов узлов (Node объекты), которые могут иметь дочерние элементы. Он реализуется такими объектами как Element, Document и DocumentFragment.
NonDocumentTypeChildNode NonDocumentTypeChildNode предоставляет свойства соседних элементов для Element и CharacterData. Эти свойства не включаются в DocumentType. Миксин не имеет собственного конструктора.
ChildNode Методы вставки рядом с узлом, его замены и удаления. Реализуется элементами, типами документов и узлами символьных данных.
NonElementParentNode Поиск элемента по идентификатору в документе или фрагменте документа.
DocumentOrShadowRoot Общие возможности документа и теневого корня; дополнительные члены определяются несколькими спецификациями.

События и отмена операций

Регистрация обработчиков, передача данных о событии и согласованная отмена асинхронных действий.

События и отмена операций: интерфейсы и API
Интерфейс / API Описание
EventTarget Интерфейс EventTarget реализуется объектами, которые могут принимать и обрабатывать события, например, такими как Element, Document, Window и XMLHttpRequest.
Event Базовый интерфейс всех событий: тип, цель, фаза распространения, отмена действия по умолчанию. События возникают из-за действий пользователя (мышь, клавиатура) или работы API, например окончания загрузки или анимации. Данные конкретного вида событий добавляют производные интерфейсы ниже.
MouseEvent События мыши: click, dblclick, mousedown и другие. Содержит координаты указателя, нажатую кнопку и состояние клавиш-модификаторов.
PointerEvent Единая модель событий мыши, пера и касания: идентификатор указателя, тип устройства, давление и размер контакта. Расширяет MouseEvent.
KeyboardEvent События клавиатуры keydown и keyup. Свойство key содержит введённое значение с учётом раскладки, code — физическую клавишу.
InputEvent Изменение редактируемого содержимого: события beforeinput и input с видом правки и вставляемыми данными. Не заменяет события клавиатуры: ввод возможен и без клавиш.
FocusEvent Получение и потеря фокуса: focus, blur и всплывающие focusin, focusout. Свойство relatedTarget указывает второй участвующий элемент.
CustomEvent Событие приложения с дополнительными данными в detail.
MessageEvent Данные сообщения, например при обмене между окнами, воркерами (скриптами в фоновом потоке) или через WebSocket.
CloseEvent Информация о закрытии соединения WebSocket: код, причина и признак корректного закрытия.
AbortController Управляет сигналом отмены для поддерживающих его операций, например сетевого запроса.
AbortSignal Передаёт состояние и причину отмены. Сам по себе не останавливает произвольный код.

Окно, навигация и окружение

Доступ к документу, адресу страницы, истории переходов и общим функциям среды выполнения.

Окно, навигация и окружение: интерфейсы и API
Интерфейс / API Описание
Window Окно или фрейм браузера с документом DOM; в странице это глобальный объект. Через него доступны, например, requestAnimationFrame(), matchMedia() и getComputedStyle().
WindowOrWorkerGlobalScope Миксин со свойствами и функциями, общими для Window и WorkerGlobalScope: таймеры, fetch(), structuredClone(), queueMicrotask(), btoa() и atob().
Location Адрес текущего документа и операции навигации. Доступ между разными источниками ограничен.
History История сеанса: переходы и изменение адреса и состояния текущей записи без загрузки нового документа.
Navigator Точка доступа к сведениям и возможностям среды браузера; доступность отдельных возможностей различается.
CustomElementRegistry Регистрация и получение определений пользовательских HTML-элементов.
Screen Сведения об экране устройства: размеры, доступная область и глубина цвета. Размеры окна браузера хранятся в свойствах Window, а не здесь.
Performance Измерение времени и доступ к записям производительности; для наблюдения за новыми записями используется PerformanceObserver.

Сеть и обмен данными

HTTP-запросы, двусторонние соединения и получение сообщений от сервера.

Сеть и обмен данными: интерфейсы и API
Интерфейс / API Описание
Fetch API Обзор запросов через fetch(), объектов запроса и ответа, заголовков и обработки тела сообщения.
Request Описание запроса: адрес, метод, заголовки, тело и параметры выполнения.
Response Ответ с кодом состояния, заголовками и телом. Тело обычно можно прочитать только один раз.
Headers Набор HTTP-заголовков запроса или ответа. Некоторые имена и изменения ограничены браузером.
XMLHttpRequest Запрос к серверу без перезагрузки страницы — основа подхода AJAX (англ. Asynchronous JavaScript and XML). Сообщает о ходе загрузки через события. В новом коде запросы обычно выполняют через fetch(); XMLHttpRequest встречается в существующих проектах и при отслеживании прогресса отправки.
WebSocket Соединение с сервером WebSocket: открытие, отправка и получение сообщений, закрытие. О получении данных и изменении состояния сообщает событиями.
WebSocket API Двусторонняя связь браузера и сервера через одно постоянное соединение. Сервер может отправлять сообщения сам, без повторных запросов от страницы.
EventSource Получение потока событий от сервера по HTTP — Server-Sent Events. Передача идёт от сервера к клиенту.

Хранение данных

Хранение строковых значений, структурированных данных и ответов на запросы.

Хранение данных: интерфейсы и API
Интерфейс / API Описание
Storage Хранилище строковых пар «ключ — значение» для источника документа (origin): localStorage или sessionStorage. Позволяет добавлять, читать, изменять и удалять записи.
Web Storage API Хранение строковых пар «ключ — значение» в браузере: постоянное (localStorage) и на время сеанса вкладки (sessionStorage). В отличие от cookie (небольших данных, которые браузер отправляет серверу с запросами), данные не передаются на сервер автоматически.
StorageEvent Событие изменения веб-хранилища, отправляемое другим подходящим документам; не отправляется окну, выполнившему изменение.
IndexedDB API Асинхронная база структурированных данных с хранилищами объектов, индексами и транзакциями. Основные интерфейсы: IDBFactory, IDBDatabase, IDBTransaction.
CacheStorage Коллекция именованных кешей. Используется, в частности, для автономной работы приложений.
Cache Хранит пары запросов и ответов. Обновление и удаление записей контролирует код приложения; это не обычный HTTP-кеш браузера.

Файлы, адреса и потоки

Работа с двоичными данными, выбранными файлами, адресами и последовательной обработкой содержимого.

Файлы, адреса и потоки: интерфейсы и API
Интерфейс / API Описание
Blob Неизменяемая последовательность байтов с указанным типом содержимого.
File Файл: расширяет Blob именем и временем последнего изменения. Не даёт произвольного доступа к файлам пользователя.
FileReader Асинхронно читает содержимое Blob или File и сообщает результат через события.
FormData Набор полей формы, включая файлы, для передачи в запросе.
URL Разбор и изменение частей URL; относительный адрес требует базового адреса.
URLSearchParams Чтение и изменение параметров строки запроса, включая повторяющиеся имена.
TextEncoder Преобразует строку в байты UTF-8 (Uint8Array). Нужен, например, перед хешированием или кодированием текста в Base64.
TextDecoder Преобразует байты в строку по указанной кодировке, по умолчанию UTF-8. Может сообщать об ошибке при некорректных байтах вместо подстановки символа замены.
Streams API Потоковая обработка данных через ReadableStream, WritableStream и TransformStream с управлением скоростью передачи.

Стили, геометрия и анимация

Чтение и изменение CSS, наблюдение за размерами и видимостью, управление анимацией.

Стили, геометрия и анимация: интерфейсы и API
Интерфейс / API Описание
CSSOM Обзор объектной модели CSS: таблицы стилей, правила и объявления свойств.
CSSStyleSheet Таблица стилей с доступом к её правилам. Чтение правил внешней таблицы может ограничиваться политикой одного источника.
CSSStyleDeclaration Набор CSS-объявлений: чтение значений и, для изменяемых наборов, запись свойств.
ResizeObserver Наблюдает за изменением размеров элементов. Не заменяет наблюдение за изменениями дерева DOM.
IntersectionObserver Асинхронно сообщает о пересечении элемента с областью просмотра или заданным корнем.
Web Animations API Управление анимациями: запуск, пауза, время и эффекты через Animation и связанные интерфейсы.

Фоновые задачи и сообщения

Выполнение задач вне основного потока и обмен сообщениями между контекстами.

Фоновые задачи и сообщения: интерфейсы и API
Интерфейс / API Описание
Worker Запускает воркер (англ. worker) — скрипт в фоновом потоке без прямого доступа к DOM страницы. Данные передаются сообщениями.
WorkerGlobalScope Глобальное окружение воркера с доступными ему функциями и событиями.
Service Worker API Событийная работа с сетевыми запросами и кешем для страниц в области действия регистрации. Требует защищённого контекста; сервис-воркер не выполняется непрерывно.
MessageChannel Создаёт пару связанных портов для обмена сообщениями.
MessagePort Один конец канала сообщений. Может передаваться между поддерживающими это контекстами.
BroadcastChannel Обмен сообщениями между совместимыми контекстами одного источника с учётом разделения хранилища браузером.

Графика, звук и видео

Рисование, обработка звука, захват медиаданных и связь в реальном времени.

Графика, звук и видео: интерфейсы и API
Интерфейс / API Описание
Canvas API Рисование в canvas. Для двумерной графики используется CanvasRenderingContext2D.
Web Audio API Обработка и синтез звука графом аудиоузлов; основная точка управления — AudioContext.
MediaDevices Перечисление медиаустройств и запрос доступа к камере или микрофону. Захват требует защищённого контекста и разрешения.
MediaStream Набор аудио- и видеодорожек, представленных объектами MediaStreamTrack.
WebRTC API Обмен аудио, видео и данными через RTCPeerConnection и связанные интерфейсы. Установление соединения требует обмена сигнальными данными.

Разрешения, устройства и криптография

Возможности, для которых особенно важны условия доступа, настройки пользователя и поддержка браузером.

Разрешения, устройства и криптография: интерфейсы и API
Интерфейс / API Описание
Geolocation Получение местоположения устройства и наблюдение за его изменением. Требует разрешения пользователя и защищённого контекста.
Permissions Запрос состояния поддерживаемых разрешений. Сам запрос состояния не выдаёт разрешение.
Clipboard API Асинхронное чтение и запись буфера обмена. Доступ зависит от защищённого контекста, действий пользователя и правил браузера.
Notification Системные уведомления вне страницы. Требуют разрешения пользователя; запрос разрешения обычно делают в ответ на действие пользователя.
Crypto Криптографически стойкие случайные значения и доступ к SubtleCrypto.
SubtleCrypto Криптографические операции: хеширование, шифрование, подпись и работа с ключами. Требует защищённого контекста.

Доступность возможностей

Наличие интерфейса в каталоге не означает одинаковую поддержку во всех браузерах и контекстах. Некоторые API доступны только в окне или воркере; другие требуют HTTPS, разрешения пользователя или непосредственного действия, например нажатия кнопки. Поддержку и ограничения проверяйте для конкретной возможности.

Спецификация