Fereastră și Mediu de Execuție
Fereastră și Mediu de Execuție
Unele documente presupun un mediu de navigare — o fereastră, o locație, stocare, evenimente. Acest strat modelează aceste obiecte în Python pur, astfel încât aceste documente pot fi procesate pe server fără un browser.
Obiectul Fereastră
Window ancorează mediul, cu WindowEventLoop care conduce procesarea evenimentelor, și Screen, VisualViewport și BarProp care modelează starea legată de afișare. BrowsingContext leagă o fereastră de documentul său.
Stare de navigare
Location și History modelează adresa și istoricul sesiunii; Navigator raportează identitatea mediului, configurabil prin set_default_user_agent().
Evenimente
Interfața EventTarget cu familia Event — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — implementează distribuția de evenimente standard. AbortController și AbortSignal oferă anularea.
Stocare și Mesagerie
Storage modelează stocarea web tip cheie-valoare. MessageChannel, MessagePort și BroadcastChannel acoperă transmiterea de mesaje, cu ajutoare de clonare structurată (clone_value) în spatele lor.
Observatori și Performanță
IntersectionObserver și ResizeObserver (cu tipurile lor de intrare) modelează API-urile de observare, în timp ce Performance, PerformanceEntry și Console completează scripturile de servicii de runtime cu care se lucrează în mod obișnuit.
Sfaturi și Cele Mai Bune Practici
- Atingeți acest strat numai când procesați documente care depind cu adevărat de starea mediului — parsarea și stilizarea nu o necesită niciodată
- Utilizați
set_default_user_agent()când logica ulterioară se ramifică pe baza identitățiiNavigator - Conectați
AbortSignalîn procesarea de lungă durată pentru anulare curată
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
| Scriptul așteaptă variabile globale ale ferestrei | Document scris pentru browsere | Furnizați stratul de mediu Window |
| Evenimentele nu se declanșează niciodată | Nicio buclă de evenimente nu conduce la expediere | Utilizați WindowEventLoop |
| Ramura dependentă de user-agent se comportă incorect | Șirul UA implicit în vigoare | Setat prin set_default_user_agent() |
FAQ
Am nevoie de o fereastră pentru a parsa HTML?
Nu — stratul de mediu este opțional; parsarea, CSSOM și layout-ul sunt independente de acesta.
Ce tipuri de evenimente sunt modelate?
Familia standard: UI, mouse, tastatură, focus, input, popstate, hashchange, error și evenimente personalizate, toate trimise prin EventTarget.
Este stocarea web persistentă?
Storage modelează suprafața API în scopuri de procesare; persistența este la discreția aplicației de încorporare.
Rezumat API Reference
| Clasă/Metodă | Descriere: |
|---|---|
Window | Ancora mediului de navigare |
Location | Starea adresei |
History | Istoricul sesiunii |
EventTarget | Interfață de expediere a evenimentelor |
AbortController | Controler de anulare |
IntersectionObserver | Observarea intersecției |
set_default_user_agent | Configurați identitatea Navigator |