Интерфейсы прикладного программирования (API) — это предопределенные конструкции языка программирования, которые позволяют разработчику создавать сложные функции с меньшими усилиями. Они «скрывают» более сложный код от программиста, обеспечивая простоту использования.
API-интерфейсы браузера встроены в веб-браузер и могут использовать данные из браузера и компьютерной среды для выполнения более сложных действий с этими данными. Например, Geolocation API предоставляет простые в использовании конструкции JavaScript для управления данными о местоположении, поэтому вы можете, например, отметить свое местоположение на карте Google.
В этой статье мы рассмотрим несколько самых интересных на мой взгляд API, о которых вы, возможно, не знали.
API-интерфейс наблюдателя за пересечением
Intersection Observer API позволяет веб-приложениям асинхронно отслеживать изменения в пересечении элемента с его родительским элементом или областью просмотра документа.
Исторически определение видимости одного элемента или видимости двух элементов по отношению друг к другу было сложной задачей. Способы решения этой проблемы были ненадежными и замедляли работу браузера. Однако по мере роста Интернета необходимость решения этой проблемы также возрастала по многим причинам, таким как:
- Ленивая загрузка изображений или другого контента при прокрутке страницы.
- Реализация веб-сайтов с «бесконечной прокруткой», когда контент загружается при прокрутке страницы вниз без переключения между страницами.
- Отчет о видимости рекламы для расчета выручки от нее.
- Решение о том, запускать ли какой-либо процесс или анимацию, зависит от того, видит пользователь результат или нет.
В прошлом реализация обнаружения пересечения элементов включала использование обработчиков событий и циклов, которые вызывали такие методы, как Element.getBoundingClientRect, для сбора необходимой информации о каждом затронутом элементе. Поскольку весь этот код выполняется в основном потоке, могут возникать различные проблемы с производительностью.
Пример использования:
Приостановите текущее видео и запустите его снова в зависимости от того, попадает ли видео в область просмотра.
Результат: Пока видео находится в области просмотра, оно воспроизводится.
API буфера обмена
Существует новый API JavaScript для асинхронного доступа к буферу обмена с использованием спецификации, которая все еще находится в стадии разработки. До сих пор в веб-разработке стандартным способом копирования текста в буфер обмена был метод document.execCommand. Основным недостатком этого подхода является то, что это синхронная блокирующая операция. API асинхронного буфера обмена основан на промисах, и одной из его целей является устранение этого недостатка. Он призван предоставить веб-разработчикам более простой в использовании API унифицированного буфера обмена. Кроме того, этот API предназначен для поддержки многих типов данных, а не только текстовых/обычных.
Запись данных в буфер обмена — это простая операция, реализуемая вызовом метода writeText объекта буфера обмена и передачей ему соответствующего текста.
Метод readText используется для чтения данных из буфера обмена. В целях повышения безопасности, помимо того, что страница, считывающая данные из буфера обмена, должна быть открыта в активной вкладке браузера, пользователь должен предоставить ей дополнительное разрешение. Браузер автоматически запросит это разрешение при первом вызове readText.
API геолокации
API геолокации позволяет пользователю указать свое местоположение в веб-приложении, если пользователь решит предоставить его. Из соображений конфиденциальности у пользователя будет запрошено разрешение на предоставление информации о местоположении.
В качестве примера используйте метод Geolocation.getCurrentPosition() для определения местоположения пользователя.
Этот метод принимает один обязательный и два необязательных параметра: success — это функция обратного вызова, которая получает объект Position при предоставлении разрешения, error — это функция обратного вызова, которая получает объект PositionError при отказе в доступе, а options — это объект с настройками. Вот как это выглядит в коде:
API производительности
Измерение времени, необходимого для выполнения функции, — хороший способ доказать, что одна реализация механизма более производительна, чем другая. Это позволяет убедиться, что на производительность функции не повлияют некоторые изменения, внесенные в код. Это также помогает найти узкие места в производительности приложений.
Интерфейс Performance предоставляет доступ к значению типа DOMHighResTimeStamp через метод performance.now(). Этот метод возвращает метку времени, указывающую время в миллисекундах с момента начала существования документа. При этом точность этого индикатора составляет около 5 микросекунд (долей миллисекунды).
История API
Объект Window DOM предоставляет доступ к истории текущего сеанса браузера (не путать с историей расширений браузера) через объект истории. Он предоставляет полезные методы и свойства, которые позволяют перемещаться вперед и назад по истории пользователя и манипулировать ее содержимым.
Чтобы двигаться назад по истории:
window.history.back();
Аналогично можно двигаться вперед (как если бы пользователь нажал кнопку «Вперед»):
window.history.forward();
Переместиться на 2 страницы назад можно так:
window.history.go(-2);
Похоже, вы можете перейти на 2 страницы вперед:
window.history.go(2);
Заключение
В этой статье мы рассмотрели лишь малую часть API браузера. Для более подробного ознакомления рекомендую перейти к документации этих апи. Желаю вам развития и успешных проектов!