Вікно та середовище виконання
Вікно та середовище виконання
Деякі документи передбачають середовище перегляду — вікно, розташування, сховище, події. Цей шар моделює ці об’єкти у чистому Python, щоб такі документи могли оброблятися на боці сервера без браузера.
Об’єкт Window
Window закріплює середовище, WindowEventLoop керує обробкою його подій, а Screen, VisualViewport і BarProp моделюють стан, пов’язаний з відображенням. BrowsingContext пов’язує вікно з його документом.
Стан навігації
Location і History моделюють адресу та історію сеансів; Navigator повідомляє ідентифікатор середовища, налаштовуваний через set_default_user_agent().
Події
Інтерфейс EventTarget у поєднанні з родиною Event — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — реалізує стандартну розсилку подій. AbortController і AbortSignal забезпечують скасування.
Зберігання та обмін повідомленнями
Storage моделює сховище ключ-значення у вебі. MessageChannel, MessagePort та BroadcastChannel охоплюють передачу повідомлень, з помічниками structured-clone (clone_value) за їхньою підтримкою.
Спостерігачі та продуктивність
IntersectionObserver та ResizeObserver (з їхніми типами запису) моделюють API спостереження, тоді як Performance, PerformanceEntry і Console доповнюють скрипти служб виконання, з якими зазвичай працює.
Поради та найкращі практики
- Змінюйте цей шар лише при обробці документів, які дійсно залежать від стану середовища — парсинг і стилізація ніколи не потребують його.
- Використовуйте
set_default_user_agent(), коли нижчестояча логіка розгалужується за ідентичністюNavigator. - Підключіть
AbortSignalдо тривалих процесів для чистого скасування
Типові проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
| Скрипт очікує глобальні змінні window | Документ створений для браузерів | Надайте шар середовища Window |
| Події ніколи не спрацьовують | Відсутній цикл подій, що керує диспетчеризацією | Використайте WindowEventLoop |
| Гілка, залежна від User-agent, поводиться неправильно | Діє рядок UA за замовчуванням | Встановлюється через set_default_user_agent() |
FAQ
Чи потрібне мені вікно (Window) для розбору HTML?
Ні — шар середовища є необов’язковим; розбір, CSSOM та розмітка незалежні від нього.
Які типи подій моделюються?
Стандартна сімейство: UI, mouse, keyboard, focus, input, popstate, hashchange, error та custom events, усі розсилаються через EventTarget.
Чи є веб-сховище постійним?
Storage моделює поверхню API для обробки; збереження залежить від вбудованої програми.
Підсумок API Reference
| Клас/Метод | Опис |
|---|---|
Window | Якір середовища перегляду |
Location | Стан адреси |
History | Історія сесії |
EventTarget | Інтерфейс розсилки подій |
AbortController | Контролер скасування |
IntersectionObserver | Спостереження перетину |
set_default_user_agent | Налаштувати ідентичність Navigator |