Finestra e Runtime Environment
Finestra e Ambiente di Runtime
Alcuni documenti presumono un ambiente di navigazione — una finestra, una posizione, storage, eventi. Questo livello modella quegli oggetti in puro Python così tali documenti possono essere elaborati lato server senza un browser.
L’oggetto Window
Window ancorra l’ambiente, con WindowEventLoop che gestisce l’elaborazione degli eventi, e Screen, VisualViewport e BarProp che modellano lo stato relativo alla visualizzazione. BrowsingContext collega una finestra al suo documento.
Stato di Navigazione
Location e History modellano l’indirizzo e la cronologia della sessione; Navigator segnala l’identità dell’ambiente, configurabile tramite set_default_user_agent().
Eventi
L’interfaccia EventTarget con la famiglia Event — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — implementa la dispatch di eventi standard. AbortController e AbortSignal forniscono la cancellazione.
Archiviazione e Messaggistica
Storage modella l’archiviazione web chiave-valore. MessageChannel, MessagePort e BroadcastChannel coprono il passaggio di messaggi, con helper structured-clone (clone_value) dietro di essi.
Osservatori e Prestazioni
IntersectionObserver e ResizeObserver (con i loro tipi di entry) modellano le API di osservazione, mentre Performance, PerformanceEntry e Console completano gli script dei servizi di runtime a cui si fa comunemente riferimento.
Suggerimenti e Buone Pratiche
- Modificate questo livello solo quando si elaborano documenti che dipendono realmente dallo stato dell’ambiente — l’analisi e lo styling non lo richiedono mai.
- Usa
set_default_user_agent()quando la logica a valle si dirama in base all’identità diNavigator. - Collega
AbortSignalall’elaborazione a lungo termine per una cancellazione pulita
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
| Lo script si aspetta le variabili globali di window | Documento creato per i browser | Fornire lo strato ambientale Window |
| Gli eventi non vengono mai attivati | Nessun ciclo di eventi che gestisce la distribuzione | Usa WindowEventLoop |
| Il ramo dipendente dall’user-agent si comporta in modo anomalo | Stringa UA predefinita in vigore | Impostato tramite set_default_user_agent() |
FAQ
Ho bisogno di una Window per analizzare HTML?
No — lo strato ambientale è opzionale; l’analisi, il CSSOM e il layout sono indipendenti da esso.
Quali tipi di evento sono modellati?
La famiglia standard: UI, mouse, tastiera, focus, input, popstate, hashchange, error e eventi personalizzati, tutti inviati tramite EventTarget.
Lo storage web è persistente?
Storage modella la superficie API per scopi di elaborazione; la persistenza è a discrezione dell’applicazione di embedding.
Riepilogo API Reference
| Classe/Metodo | Descrizione |
|---|---|
Window | Ancora dell’ambiente di navigazione |
Location | Stato dell’indirizzo |
History | Cronologia della sessione |
EventTarget | Interfaccia di dispatch degli eventi |
AbortController | Controller di annullamento |
IntersectionObserver | Osservazione dell’intersezione |
set_default_user_agent | Configura l’identità di Navigator |