Понимание BOM в JavaScript: Быстрое объяснение с примерами

Источник: «Understanding BOM in JavaScript: Fast Explaining and Providing Examples»
JavaScript — универсальный язык программирования, позволяющий разработчикам создавать динамичные и интерактивные веб-приложения. Хотя основная функциональность языка заключается в манипулировании веб-контентом с помощью объектной модели документа (DOM), JavaScript также предоставляет объектную модель браузера (BOM) для взаимодействия со средой браузера.

Что такое BOM

BOM означает Browser Object Model (Объектная Модель Браузера). Она представляет различные объекты, предоставляемые средой браузера, позволяя JavaScript взаимодействовать с самим браузером, обрабатывать свойства окна и управлять взаимодействием с пользователем.

Ключевые компоненты BOM

Объект window

Объект window является корневым объектом BOM. Он представляет окно браузера и служит глобальным объектом для JavaScript в среде веб-браузера. Он предоставляет доступ к различным свойствам и методам.

// Доступ к свойствам window
console.log(window.innerWidth); // Возвращает внутреннюю ширину окна браузера
console.log(window.location.href); // Возвращает URL текущей страницы

Объект document

Хотя объект document является частью DOM, он также относится к BOM. Он представляет саму веб-страницу и предоставляет методы для работы с её содержимым.

// Доступ к свойствам document
console.log(document.title); // Возвращает заголовок текущего document'а
document.getElementById('myElement').style.color = 'red'; // Изменение стиля элемента

Объект navigator

Объект navigator предоставляет информацию о браузере, такую как его название, версия и платформа.

// Доступ к свойствам navigator
console.log(navigator.userAgent); // Возвращает информацию о user agent
console.log(navigator.platform); // Возвращает платформу (ОС), на которой работает браузер

Объект history

Объект history позволяет манипулировать историей сессии браузера, что даёт возможность управлять навигацией в пределах сессии браузера.

// Использование объекта history
history.back(); // Переход к предыдущей странице из истории
history.forward(); // Переход к следующей странице из истории

Объект screen

Объект screen предоставляет информацию об экране пользователя, такую как его ширина, высота и глубина цвета.

// Доступ к свойствам экрана
console.log(screen.width); // Возвращает ширину экрана
console.log(screen.height); // Возвращает высоту экрана

Практические примеры использования

Обработка событий изменения размера окна браузера

При создании отзывчивых веб-приложений очень важно адаптироваться к различным размерам экрана. Использование события resize с помощью window.addEventListener позволяет разработчикам динамически реагировать на изменения размера окна браузера.

window.addEventListener('resize', function() {
console.log('Window resized');
// Дополнительные действия при изменении размера окна
});

// или

onresize = (event) => {
console.log('Window resized');
// Дополнительные действия при изменении размера окна
};

В этом примере каждый раз, когда пользователь изменяет размер окна браузера, будет выполняться функция в слушателе событий. Эта функция может быть использована для корректировки макета, обновления элементов или запуска определённых действий для повышения удобства работы пользователя в зависимости от размера экрана.

Открытие нового окна браузера

Метод window.open() позволяет разработчикам программно открывать новые окна или вкладки браузера. Этот метод принимает такие параметры, как URL-адрес для открытия и поведение целевого окна (например, открытие в новой вкладке или окне).

let newWindow = window.open('https://www.example.com', '_blank');

Здесь window.open() открывает новое окно браузера с URL https://www.example.com в новой вкладке (_blank). Разработчики также могут указывать размеры, параметры и другие свойства окна по мере необходимости.

Уведомление пользователя перед закрытием окна

Разработчикам часто требуется подтверждение пользователя перед тем, как покинуть страницу, особенно если у него есть несохраненные изменения или он может потерять данные. Событие onbeforeunload может быть использовано для того, чтобы предложить пользователю диалог подтверждения перед тем, как он уйдёт с текущей страницы.

window.onbeforeunload = function() {
return 'Вы уверены, что хотите покинуть страницу?';
};

// или

addEventListener("beforeunload", (event) => {
return 'Вы уверены, что хотите покинуть страницу?';
});

// или

onbeforeunload = (event) => {
return 'Вы уверены, что хотите покинуть страницу?';
};

Этот код вызовет диалог подтверждения с указанным сообщением, когда пользователь попытается закрыть вкладку или окно, предоставляя возможность подтвердить своё действие или остаться на текущей странице.

Доступ к геолокации

API navigator.geolocation позволяет веб-приложениям получать доступ к географическому положению пользователя, если он даёт на это разрешение. Используя функцию getCurrentPosition(), разработчики могут получить координаты текущего местоположения пользователя.

navigator.geolocation.getCurrentPosition(function(position) {
console.log('Latitude:', position.coords.latitude);
console.log('Longitude:', position.coords.longitude);
});

С согласия пользователя эта функция получает координаты широты и долготы устройства пользователя, позволяя приложениям предоставлять услуги на основе местоположения или персонализировать контент в зависимости от географического положения пользователя.

Заключение

Понимание Объектной Модели Браузера (BOM) в JavaScript имеет решающее значение для разработки динамичных и интерактивных веб-приложений. Она предоставляет доступ к различным объектам и функциям, связанным с браузером, позволяя разработчикам создавать богатый пользовательский опыт. Используя BOM, разработчики могут манипулировать окнами браузера, обрабатывать взаимодействие с пользователем, получать доступ к информации браузера и многое другое, повышая общую функциональность веб-приложений.

Дополнительные материалы

Предыдущая Статья

Основные псевдоклассы фокуса :focus, :focus-within, и :focus-visible

Следующая Статья

Laravel под капотом: Facades