JavaScript-Kontext
JavaScript Kontext
Die Scripting-Ebene bietet einen kontrollierten JavaScript-Evaluierungskontext für Dokumente, die einen benötigen. Sie ist bewusst richtliniengesteuert: Die Modulauflösung ist explizit, und Fehlermeldungen treten als typisierte Ausnahmen auf.
Der Evaluierungskontext
JSContext hostet die Skriptauswertung. Während der Auswertung ausgelöste Fehler treten als JSEvaluationError auf und halten Skriptfehler von Python-seitigen Fehlern getrennt.
Modul Laden
Die Modulauflösung wird von ModuleRegistry gesteuert, das Modul-Spezifizierer zu Implementierungen zuordnet. Fehlende Module werfen ModuleNotFoundError (den eigenen typisierten Fehler der Bibliothek) anstatt stillschweigend Stubs zurückzugeben.
Lade-Richtlinien
ModuleLoadPolicy steuert, was ein Kontext laden darf — der Mechanismus zur Sandbox-Einrichtung des Skriptverhaltens bei serverseitiger Verarbeitung, bei der ein beliebiger Modulzugriff unerwünscht ist.
Tipps und bewährte Vorgehensweisen
- Registrieren Sie nur die Module, die Ihr Verarbeitungsszenario benötigt; ein kleiner Katalog ist die Sandbox.
- Fangen Sie
JSEvaluationErrorgetrennt von generischen Ausnahmen ab, um Skriptfehler von Pipeline-Fehlern zu unterscheiden. - Betrachten Sie
ModuleNotFoundErrorals ein Policy-Signal, nicht als eine fatale Bedingung — es bedeutet oft, dass die Eingabe einen Browser API erwartet, den Sie bewusst nicht bereitstellen.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
ModuleNotFoundError bei der Auswertung | Modul nicht registriert | Fügen Sie es zu ModuleRegistry hinzu oder passen Sie die Richtlinie an |
| Skriptfehler lässt die Pipeline abstürzen | JSEvaluationError nicht abgefangen | Behandle es an der Evaluationsgrenze |
| Unerwarteter Modulzugriff | Richtlinie zu großzügig | Verschärfe ModuleLoadPolicy |
FAQ
Ist eine Skriptauswertung für das Parsen erforderlich?
Nein — Parsen, CSSOM und Layout funktionieren ohne jeglichen Skriptkontext.
Wie kann ich steuern, was Skripte importieren können?
Durch ModuleRegistry (was existiert) und ModuleLoadPolicy (was geladen werden kann).
Wie treten Skriptfehler auf?
Als JSEvaluationError-Ausnahmen auf der Python-Seite.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
JSContext | JavaScript Evaluationskontext |
ModuleRegistry | Modul-Bezeichner-Register |
ModuleLoadPolicy | Kontrolle der Modul-Lade-Richtlinie |
JSEvaluationError | Typisierter script-evaluation-Fehler |
ModuleNotFoundError | Typisierter missing-module-Fehler |