Вікно та середовище виконання

Вікно та середовище виконання

Вікно та середовище виконання

Деякі документи передбачають середовище перегляду — вікно, розташування, сховище, події. Цей шар моделює ці об’єкти у чистому 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

Дивіться також

 Українська