Окно и среда выполнения

Окно и среда выполнения

Некоторые документы предполагают наличие браузерной среды — окно, местоположение, хранилище, события. Этот слой моделирует эти объекты в чистом 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 и пользовательские события, все они отправляются через EventTarget.

Является ли веб-хранилище постоянным?

Storage моделирует поверхность API для целей обработки; долговечность зависит от встраивающего приложения.


API Reference Сводка

Класс/МетодОписание:
WindowЯкорь среды просмотра
LocationСостояние адреса
HistoryИстория сеанса
EventTargetИнтерфейс диспетчеризации событий
AbortControllerКонтроллер отмены
IntersectionObserverНаблюдение за пересечением
set_default_user_agentНастроить идентичность Navigator

См. также:

 Русский