Παράθυρο και Περιβάλλον Εκτέλεσης
Παράθυρο και Περιβάλλον Εκτέλεσης
Ορισμένα έγγραφα υποθέτουν ένα περιβάλλον περιήγησης — ένα παράθυρο, μια τοποθεσία, αποθήκευση, γεγονότα. Αυτό το στρώμα μοντελοποιεί αυτά τα αντικείμενα σε καθαρό Python ώστε τέτοια έγγραφα να μπορούν να επεξεργαστούν στο διακομιστή χωρίς πρόγραμμα περιήγησης.
Το αντικείμενο Window
Window αγκυροβολεί το περιβάλλον, με WindowEventLoop να διευθύνει την επεξεργασία των γεγονότων του, και τα Screen, VisualViewport και BarProp να μοντελοποιούν κατάσταση σχετική με την οθόνη. BrowsingContext συνδέει ένα παράθυρο με το έγγραφό του.
Κατάσταση Πλοήγησης
Location και History μοντελοποιούν τη διεύθυνση και το ιστορικό της συνεδρίας· Navigator αναφέρει την ταυτότητα του περιβάλλοντος, ρυθμιζόμενη μέσω set_default_user_agent().
Γεγονότα
Η διεπαφή EventTarget με την οικογένεια Event — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — υλοποιεί την αποστολή συμβάντων σύμφωνα με τα πρότυπα. Το AbortController και το AbortSignal παρέχουν ακύρωση.
Αποθήκευση και Ανταλλαγή Μηνυμάτων
Storage μοντελοποιεί αποθήκευση web κλειδιού-τιμής. Το MessageChannel, το MessagePort και το BroadcastChannel καλύπτουν τη μετάδοση μηνυμάτων, με βοηθητικά προγράμματα structured-clone (clone_value) πίσω τους.
Παρατηρητές και Απόδοση
IntersectionObserver και ResizeObserver (με τους τύπους καταχώρησής τους) μοντελοποιούν τα API παρατήρησης, ενώ το Performance, το PerformanceEntry και το Console ολοκληρώνουν τα σενάρια υπηρεσιών χρόνου εκτέλεσης που συνήθως αγγίζονται.
Συμβουλές και Καλές Πρακτικές
- Αγγίξτε αυτό το επίπεδο μόνο όταν επεξεργάζεστε έγγραφα που πραγματικά εξαρτώνται από την κατάσταση του περιβάλλοντος — η ανάλυση και η μορφοποίηση δεν το απαιτούν ποτέ.
- Χρησιμοποιήστε το
set_default_user_agent()όταν η λογική προς τα κάτω διακλαδίζεται με βάση την ταυτότητα τουNavigator - Συνδέστε το
AbortSignalσε μακροχρόνια επεξεργασία για καθαρό τερματισμό
Συνηθισμένα προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
| Το script περιμένει καθολικές μεταβλητές του window | Έγγραφο συντάχθηκε για προγράμματα περιήγησης | Παρέχετε τη στρώση περιβάλλοντος Window |
| Τα γεγονότα δεν ενεργοποιούνται ποτέ | Δεν υπάρχει βρόχος γεγονότων που να οδηγεί στην αποστολή | Χρησιμοποιήστε WindowEventLoop |
| Το κλαδί εξαρτημένο από τον user-agent συμπεριφέρεται λανθασμένα | Η προεπιλεγμένη συμβολοσειρά UA σε ισχύ | Ορίζεται μέσω set_default_user_agent() |
FAQ
Χρειάζομαι ένα Window για την ανάλυση του HTML;
Όχι — η στρώση του περιβάλλοντος είναι προαιρετική· η ανάλυση, το CSSOM και η διάταξη είναι ανεξάρτητα από αυτήν.
Ποιοι τύποι συμβάντων μοντελοποιούνται;
Η τυπική οικογένεια: UI, mouse, keyboard, focus, input, popstate, hashchange, error, και προσαρμοσμένα γεγονότα, όλα διανέμονται μέσω του EventTarget.
Είναι το web storage μόνιμο;
Storage μοντελοποιεί την επιφάνεια του API για σκοπούς επεξεργασίας· η διατήρηση εξαρτάται από την εφαρμογή ενσωμάτωσης.
API Reference Περίληψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
Window | Αγκύρα περιβάλλοντος περιήγησης |
Location | Κατάσταση διεύθυνσης |
History | Ιστορικό συνεδρίας |
EventTarget | Διεπαφή διανομής συμβάντων |
AbortController | Ελεγκτής ακύρωσης |
IntersectionObserver | Παρατήρηση διασταύρωσης |
set_default_user_agent | Διαμόρφωση ταυτότητας Navigator |