JavaScript интерфейсы веб API
Этот раздел посвящён Web API — программным интерфейсам веб-платформы (англ. application programming interface). Они позволяют работать с документом, событиями, сетью, хранилищами, мультимедиа и возможностями устройства.
Каталог объединяет основные направления, отдельные интерфейсы и миксины. Это расширяемая подборка, а не полный перечень всех интерфейсов веб-платформы. Ссылки ведут к существующим статьям; позиции без ссылки пока сопровождаются кратким описанием.
Описание интерфейсов (объектов)
Интерфейс описывает свойства и методы объектов. Строки с названием API, например
Fetch API, ведут к обзору группы связанных интерфейсов и их совместного применения. Миксин добавляет
общие возможности нескольким интерфейсам. Методы, свойства и события подробно рассматриваются в соответствующих
статьях.
- Документ и дерево DOM
- Общие возможности узлов: миксины
- События и отмена операций
- Окно, навигация и окружение
- Сеть и обмен данными
- Хранение данных
- Файлы, адреса и потоки
- Стили, геометрия и анимация
- Фоновые задачи и сообщения
- Графика, звук и видео
- Разрешения, устройства и криптография
Документ и дерево DOM
Создание, поиск и изменение узлов страницы, работа с коллекциями и наблюдение за изменениями.
| Интерфейс / 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 | Описание |
|---|---|
ParentNode
|
Миксин ParentNode содержит методы и свойства, которые являются общими для всех типов узлов (Node
объекты), которые могут иметь дочерние элементы. Он реализуется такими объектами как Element,
Document
и DocumentFragment.
|
NonDocumentTypeChildNode
|
NonDocumentTypeChildNode предоставляет свойства соседних элементов для Element и
CharacterData. Эти свойства не включаются в DocumentType. Миксин не имеет
собственного конструктора.
|
ChildNode |
Методы вставки рядом с узлом, его замены и удаления. Реализуется элементами, типами документов и узлами символьных данных. |
NonElementParentNode |
Поиск элемента по идентификатору в документе или фрагменте документа. |
DocumentOrShadowRoot |
Общие возможности документа и теневого корня; дополнительные члены определяются несколькими спецификациями. |
События и отмена операций
Регистрация обработчиков, передача данных о событии и согласованная отмена асинхронных действий.
| Интерфейс / 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 | Описание |
|---|---|
Window
|
Окно или фрейм браузера с документом DOM; в странице это глобальный объект. Через него доступны, например,
requestAnimationFrame(), matchMedia() и getComputedStyle().
|
WindowOrWorkerGlobalScope
|
Миксин со свойствами и функциями, общими для Window и WorkerGlobalScope: таймеры,
fetch(), structuredClone(), queueMicrotask(), btoa() и
atob().
|
Location |
Адрес текущего документа и операции навигации. Доступ между разными источниками ограничен. |
History |
История сеанса: переходы и изменение адреса и состояния текущей записи без загрузки нового документа. |
Navigator |
Точка доступа к сведениям и возможностям среды браузера; доступность отдельных возможностей различается. |
CustomElementRegistry |
Регистрация и получение определений пользовательских HTML-элементов. |
Screen |
Сведения об экране устройства: размеры, доступная область и глубина цвета. Размеры окна браузера хранятся в
свойствах Window, а не здесь.
|
Performance |
Измерение времени и доступ к записям производительности; для наблюдения за новыми записями используется
PerformanceObserver.
|
Сеть и обмен данными
HTTP-запросы, двусторонние соединения и получение сообщений от сервера.
| Интерфейс / 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 | Описание |
|---|---|
Storage
|
Хранилище строковых пар «ключ — значение» для источника документа (origin): localStorage или
sessionStorage. Позволяет добавлять, читать, изменять и удалять записи.
|
Web Storage API
|
Хранение строковых пар «ключ — значение» в браузере: постоянное (localStorage) и на время сеанса
вкладки (sessionStorage). В отличие от cookie (небольших данных, которые браузер
отправляет серверу с запросами), данные не передаются на сервер автоматически.
|
StorageEvent |
Событие изменения веб-хранилища, отправляемое другим подходящим документам; не отправляется окну, выполнившему изменение. |
IndexedDB API |
Асинхронная база структурированных данных с хранилищами объектов, индексами и транзакциями. Основные
интерфейсы: IDBFactory, IDBDatabase, IDBTransaction.
|
CacheStorage |
Коллекция именованных кешей. Используется, в частности, для автономной работы приложений. |
Cache |
Хранит пары запросов и ответов. Обновление и удаление записей контролирует код приложения; это не обычный HTTP-кеш браузера. |
Файлы, адреса и потоки
Работа с двоичными данными, выбранными файлами, адресами и последовательной обработкой содержимого.
| Интерфейс / 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 | Описание |
|---|---|
CSSOM |
Обзор объектной модели CSS: таблицы стилей, правила и объявления свойств. |
CSSStyleSheet |
Таблица стилей с доступом к её правилам. Чтение правил внешней таблицы может ограничиваться политикой одного источника. |
CSSStyleDeclaration |
Набор CSS-объявлений: чтение значений и, для изменяемых наборов, запись свойств. |
ResizeObserver |
Наблюдает за изменением размеров элементов. Не заменяет наблюдение за изменениями дерева DOM. |
IntersectionObserver |
Асинхронно сообщает о пересечении элемента с областью просмотра или заданным корнем. |
Web Animations API |
Управление анимациями: запуск, пауза, время и эффекты через Animation и связанные интерфейсы.
|
Фоновые задачи и сообщения
Выполнение задач вне основного потока и обмен сообщениями между контекстами.
| Интерфейс / API | Описание |
|---|---|
Worker |
Запускает воркер (англ. worker) — скрипт в фоновом потоке без прямого доступа к DOM страницы. Данные передаются сообщениями. |
WorkerGlobalScope |
Глобальное окружение воркера с доступными ему функциями и событиями. |
Service Worker API |
Событийная работа с сетевыми запросами и кешем для страниц в области действия регистрации. Требует защищённого контекста; сервис-воркер не выполняется непрерывно. |
MessageChannel |
Создаёт пару связанных портов для обмена сообщениями. |
MessagePort |
Один конец канала сообщений. Может передаваться между поддерживающими это контекстами. |
BroadcastChannel |
Обмен сообщениями между совместимыми контекстами одного источника с учётом разделения хранилища браузером. |
Графика, звук и видео
Рисование, обработка звука, захват медиаданных и связь в реальном времени.
| Интерфейс / API | Описание |
|---|---|
Canvas API |
Рисование в canvas. Для двумерной графики используется CanvasRenderingContext2D.
|
Web Audio API |
Обработка и синтез звука графом аудиоузлов; основная точка управления — AudioContext. |
MediaDevices |
Перечисление медиаустройств и запрос доступа к камере или микрофону. Захват требует защищённого контекста и разрешения. |
MediaStream |
Набор аудио- и видеодорожек, представленных объектами MediaStreamTrack. |
WebRTC API |
Обмен аудио, видео и данными через RTCPeerConnection и связанные интерфейсы. Установление
соединения требует обмена сигнальными данными.
|
Разрешения, устройства и криптография
Возможности, для которых особенно важны условия доступа, настройки пользователя и поддержка браузером.
| Интерфейс / API | Описание |
|---|---|
Geolocation |
Получение местоположения устройства и наблюдение за его изменением. Требует разрешения пользователя и защищённого контекста. |
Permissions |
Запрос состояния поддерживаемых разрешений. Сам запрос состояния не выдаёт разрешение. |
Clipboard API |
Асинхронное чтение и запись буфера обмена. Доступ зависит от защищённого контекста, действий пользователя и правил браузера. |
Notification |
Системные уведомления вне страницы. Требуют разрешения пользователя; запрос разрешения обычно делают в ответ на действие пользователя. |
Crypto |
Криптографически стойкие случайные значения и доступ к SubtleCrypto. |
SubtleCrypto |
Криптографические операции: хеширование, шифрование, подпись и работа с ключами. Требует защищённого контекста. |
Доступность возможностей
Наличие интерфейса в каталоге не означает одинаковую поддержку во всех браузерах и контекстах. Некоторые API доступны только в окне или воркере; другие требуют HTTPS, разрешения пользователя или непосредственного действия, например нажатия кнопки. Поддержку и ограничения проверяйте для конкретной возможности.
Спецификация
- DOM Standard
- HTML Standard
- Fetch Standard
- XMLHttpRequest Standard
- WebSockets Standard
- File API
- Indexed Database API
- Streams Standard
- URL Standard
- Encoding Standard
- UI Events
- Pointer Events
- Selection API
- Notifications API
- CSSOM View
- CSSOM
- Resize Observer
- Intersection Observer
- Web Animations
- Service Workers
- Web Audio API
- Media Capture and Streams
- WebRTC
- Geolocation
- Permissions
- Clipboard API
- Web Cryptography
- High Resolution Time