Okno i środowisko uruchomieniowe
Okno i środowisko wykonawcze
Niektóre dokumenty zakładają środowisko przeglądania — okno, lokalizację, pamięć, zdarzenia. Ta warstwa modeluje te obiekty w czystym Python, aby takie dokumenty mogły być przetwarzane po stronie serwera bez przeglądarki.
Obiekt Window
Window zakotwicza środowisko, WindowEventLoop steruje przetwarzaniem zdarzeń, a Screen, VisualViewport i BarProp modelują stan związany z wyświetlaniem. BrowsingContext łączy okno z jego dokumentem.
Stan nawigacji
Location i History modelują adres i historię sesji; Navigator raportuje tożsamość środowiska, konfigurowalną przez set_default_user_agent().
Zdarzenia
Interfejs EventTarget z rodziną Event — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — implementuje standardowe rozgłaszanie zdarzeń. AbortController i AbortSignal zapewniają anulowanie.
Przechowywanie i komunikacja
Storage modeluje przechowywanie internetowe klucz-wartość. MessageChannel, MessagePort i BroadcastChannel obejmują przekazywanie wiadomości, z pomocnikami strukturalnego klonowania (clone_value) w tle.
Obserwatory i wydajność
IntersectionObserver i ResizeObserver (z ich typami wpisów) modelują API obserwacji, podczas gdy Performance, PerformanceEntry i Console uzupełniają skrypty usług czasu wykonania, z którymi zazwyczaj ma się kontakt.
Wskazówki i najlepsze praktyki
- Dotykaj tej warstwy tylko przy przetwarzaniu dokumentów, które naprawdę zależą od stanu środowiska — parsowanie i stylowanie nigdy tego nie wymagają.
- Użyj
set_default_user_agent(), gdy logika downstream rozgałęzia się w oparciu o tożsamośćNavigator. - Włącz
AbortSignaldo długotrwałego przetwarzania w celu czystego anulowania
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
| Skrypt oczekuje globalnych zmiennych window | Dokument przeznaczony dla przeglądarek | Udostępnij warstwę środowiska Window |
| Zdarzenia nigdy nie są wyzwalane | Brak pętli zdarzeń sterującej dystrybucją | Użyj WindowEventLoop |
| Gałąź zależna od user-agenta zachowuje się nieprawidłowo | Domyślny ciąg UA jest w użyciu | Ustawione za pomocą set_default_user_agent() |
FAQ
Czy potrzebuję obiektu Window, aby parsować HTML?
Nie — warstwa środowiska jest opcjonalna; parsowanie, CSSOM i układ są od niej niezależne.
Jakie typy zdarzeń są modelowane?
Standardowa rodzina: UI, mouse, keyboard, focus, input, popstate, hashchange, error oraz zdarzenia niestandardowe, wszystkie wysyłane przez EventTarget.
Czy web storage jest trwały?
Storage modeluje powierzchnię API w celach przetwarzania; trwałość zależy od aplikacji osadzającej.
Podsumowanie API Reference
| Klasa/Metoda | Opis |
|---|---|
Window | Kotwica środowiska przeglądania |
Location | Stan adresu |
History | Historia sesji |
EventTarget | Interfejs dystrybucji zdarzeń |
AbortController | Kontroler anulowania |
IntersectionObserver | Obserwacja przecięcia |
set_default_user_agent | Skonfiguruj tożsamość Navigatora |