Fenêtre et environnement d'exécution
Fenêtre et environnement d’exécution
Certains documents supposent un environnement de navigation — une fenêtre, un emplacement, du stockage, des événements. Cette couche modélise ces objets en pur Python afin que ces documents puissent être traités côté serveur sans navigateur.
L’objet Window
Window ancre l’environnement, avec WindowEventLoop pilotant son traitement des événements, et Screen, VisualViewport et BarProp modélisant l’état lié à l’affichage. BrowsingContext relie une fenêtre à son document.
État de navigation
Location et History modélisent l’adresse et l’historique de session; Navigator rapporte l’identité de l’environnement, configurable via set_default_user_agent().
Événements
L’interface EventTarget de la famille Event — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — implémente la distribution d’événements standard. AbortController et AbortSignal offrent l’annulation.
Stockage et Messagerie
Storage modélise le stockage web clé-valeur. MessageChannel, MessagePort et BroadcastChannel couvrent le passage de messages, avec des aides de clonage structuré (clone_value) derrière eux.
Observateurs et Performance
IntersectionObserver et ResizeObserver (avec leurs types d’entrée) modélisent les API d’observation, tandis que Performance, PerformanceEntry et Console complètent les scripts de services d’exécution que l’on touche couramment.
Conseils et bonnes pratiques
- Ne touchez à cette couche que lors du traitement de documents qui dépendent réellement de l’état de l’environnement — l’analyse et le style n’en ont jamais besoin.
- Utilisez
set_default_user_agent()lorsque la logique en aval se branche sur l’identitéNavigator. - Intégrer
AbortSignaldans un traitement de longue durée pour une annulation propre
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
| Le script attend les variables globales de la fenêtre | Document rédigé pour les navigateurs | Fournir la couche d’environnement Window |
| Les événements ne se déclenchent jamais | Aucune boucle d’événements ne pilote le dispatch | Utiliser WindowEventLoop |
| La branche dépendante de l’agent utilisateur se comporte mal | Chaîne UA par défaut en vigueur | Défini via set_default_user_agent() |
FAQ
Ai-je besoin d’une fenêtre pour analyser HTML?
Non — la couche d’environnement est facultative; l’analyse, le CSSOM et la mise en page en sont indépendants.
Quels types d’événements sont modélisés?
La famille standard : UI, souris, clavier, focus, entrée, popstate, hashchange, erreur et événements personnalisés, tous dispatchés via EventTarget.
Le stockage web est-il persistant?
Storage modèle la surface API à des fins de traitement ; la persistance dépend de l’application d’intégration.
Résumé API Reference
| Classe/Méthode | Description |
|---|---|
Window | Ancre de l’environnement de navigation |
Location | État de l’adresse |
History | Historique de session |
EventTarget | Interface d’envoi d’événements |
AbortController | Contrôleur d’annulation |
IntersectionObserver | Observation d’intersection |
set_default_user_agent | Configurer l’identité de Navigator |