Fönster och körningsmiljö
Fönster och körningsmiljö
Vissa dokument förutsätter en surfmiljö — ett fönster, en plats, lagring, händelser. Detta lager modellerar dessa objekt i ren Python så att sådana dokument kan bearbetas på servern utan en webbläsare.
Fönsterobjektet
Window förankrar miljön, med WindowEventLoop som styr dess händelsebehandling, och Screen, VisualViewport och BarProp modellerar visningsrelaterat tillstånd. BrowsingContext kopplar ett fönster till dess dokument.
Navigationsstatus
Location och History modellerar adressen och sessionshistoriken; Navigator rapporterar miljöidentitet, konfigurerbar via set_default_user_agent().
Händelser
Det EventTarget gränssnittet med Event familjen — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — implementerar standardhändelseutsändning. AbortController och AbortSignal tillhandahåller avbokning.
Lagring och Meddelanden
Storage modellerar nyckel-värde webb lagring. MessageChannel, MessagePort och BroadcastChannel täcker meddelandeutbyte, med structured-clone-hjälpare (clone_value) bakom dem.
Observatörer och Prestanda
IntersectionObserver och ResizeObserver (med sina posttyper) modellerar observations-API:er, medan Performance, PerformanceEntry och Console kompletterar de runtime-tjänstskript som vanligtvis berörs.
Tips och bästa praxis
- Rör bara detta lager när du bearbetar dokument som faktiskt beror på miljötillstånd — parsning och styling kräver det aldrig.
- Använd
set_default_user_agent()när efterföljande logik förgrenar sig påNavigatoridentitet. - Koppla
AbortSignaltill långvarig bearbetning för ren avbrytning
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
| Skriptet förväntar sig globala variabler i window | Dokumentet är skrivet för webbläsare | Tillhandahåll Window miljölagret |
| Händelser avfyras aldrig | Ingen händelseslinga driver dispatch | Använd WindowEventLoop |
| Användaragent-beroende gren beter sig felaktigt | Standard-UA-sträng i kraft | Ställ in via set_default_user_agent() |
FAQ
Behöver jag ett Window för att tolka HTML?
Nej — miljölagret är valfritt; tolkning, CSSOM och layout är oberoende av det.
Vilka händelsetyper modelleras?
Standardfamiljen: UI, mouse, keyboard, focus, input, popstate, hashchange, error och custom events, alla utsända via EventTarget.
Är webblagring beständig?
Storage modellerar API-ytan för bearbetningsändamål; persistens är upp till den inbäddande applikationen.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
Window | Ankare för webbläsarmiljö |
Location | Adressstatus |
History | Sessionshistorik |
EventTarget | Gränssnitt för händelseutskick |
AbortController | Avbrutningskontroller |
IntersectionObserver | Korsningsobservation |
set_default_user_agent | Konfigurera Navigator-identitet |