- Browser Object Model - Прослойка между ядром и [[DOM]] - Основное предназначение - управление окнами браузера и обеспечение их взаимодействия - Специфична для каждого [[Браузер|браузера]] - Каждое из окон браузера представляется объектом `window` ```JavaScript var contentsWindow; contentsWindow = window.open("http://cs.ifmo.ru", "contents"); ``` ## Возможности BOM - управление фреймами - поддержка задержки в исполнении кода и зацикливания с задержкой - системные диалоги - управление адресом открытой страницы - управление информацией о браузере - управление информацией о параметрах монитора - ограниченное управление историей просмотра страниц - поддержка работы с HTTP cookie ## Главные API 1. `navigator` - информация о клиенте (ОС, версия браузера, геолокация, язык) 2. `location` - работа с URL-адресом текущей вкладки - `location.href = "https://itmo.ru` - редирект на другую страницу (синхронный) - Чтение параметров из URL (`?id=5&user=admin`) 3. `history` - управление историей сессии. Позволяет ходить вперед/назад или менять URL в строке без перезагрузки страницы (основа для React/Vue) 4. `localStorage`/`sessionStorage` - встроенная key-value база данных в браузере 5. Блокирующие диалоги: `alert()`, `confirm()`, `prompt()`