Fenster und Laufzeitumgebung
Fenster- und Laufzeitumgebung
Einige Dokumente gehen von einer Browsing-Umgebung aus — einem Fenster, einem Ort, Speicher, Ereignissen. Diese Schicht modelliert diese Objekte in reinem Python, sodass solche Dokumente serverseitig ohne Browser verarbeitet werden können.
Das Fensterobjekt
Window verankert die Umgebung, wobei WindowEventLoop die Ereignisverarbeitung steuert und Screen, VisualViewport und BarProp den displaybezogenen Zustand modellieren. BrowsingContext verbindet ein Fenster mit seinem Dokument.
Navigationszustand
Location und History modellieren die Adresse und den Sitzungsverlauf; Navigator meldet die Identität der Umgebung, konfigurierbar über set_default_user_agent().
Ereignisse
Die EventTarget-Schnittstelle mit der Event-Familie — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — implementiert standardmäßige Ereignisverteilung. AbortController und AbortSignal bieten Abbruch.
Speicherung und Messaging
Storage modelliert schlüsselwertbasierten Webspeicher. MessageChannel, MessagePort und BroadcastChannel decken Nachrichtenübermittlung ab, mit Structured-Clone-Hilfen (clone_value) im Hintergrund.
Beobachter und Leistung
IntersectionObserver und ResizeObserver (mit ihren Entry-Typen) modellieren Beobachtungs-APIs, während Performance, PerformanceEntry und Console die Laufzeit-Diensteskripte ergänzen, die üblicherweise berührt werden.
Tipps und bewährte Verfahren
- Berühren Sie diese Schicht nur, wenn Sie Dokumente verarbeiten, die tatsächlich vom Umgebungszustand abhängen — Parsing und Styling erfordern sie nie.
- Verwenden Sie
set_default_user_agent(), wenn die nachgelagerte Logik anhand der Identität vonNavigatorverzweigt. - Binde
AbortSignalin langlaufende Verarbeitung ein, um einen sauberen Abbruch zu ermöglichen.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| Skript erwartet globale window-Objekte | Dokument für Browser verfasst | Stellen Sie die Window Umgebungsschicht bereit |
| Ereignisse werden nie ausgelöst | Keine Ereignisschleife steuert den Dispatch | Verwenden Sie WindowEventLoop |
| User-Agent-abhängiger Zweig verhält sich fehlerhaft | Standard-User-Agent-String ist aktiv | Über set_default_user_agent() festgelegt |
FAQ
Benötige ich ein Window, um HTML zu parsen?
Nein — die Umgebungsschicht ist optional; Parsing, CSSOM und Layout sind davon unabhängig.
Welche Ereignistypen werden modelliert?
Die Standardfamilie: UI, Maus, Tastatur, Fokus, Eingabe, popstate, hashchange, Fehler und benutzerdefinierte Ereignisse, alle über EventTarget ausgelöst.
Ist Web-Storage persistent?
Storage modelliert die API-Oberfläche für Verarbeitungszwecke; die Persistenz liegt in der Verantwortung der einbettenden Anwendung.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
Window | Browser-Umgebungs-Anker |
Location | Adresszustand |
History | Sitzungsverlauf |
EventTarget | Event-Dispatch-Schnittstelle |
AbortController | Stornierungscontroller |
IntersectionObserver | Schnittmengenbeobachtung |
set_default_user_agent | Navigator-Identität konfigurieren |