Cửa sổ và Môi trường Thực thi
Cửa sổ và Môi trường Thời gian chạy
Một số tài liệu giả định môi trường duyệt — một cửa sổ, một vị trí, bộ nhớ, sự kiện. Lớp này mô hình hoá các đối tượng đó trong Python thuần túy để các tài liệu như vậy có thể được xử lý phía máy chủ mà không cần trình duyệt.
Đối tượng Cửa sổ
Window neo môi trường, với WindowEventLoop điều khiển việc xử lý sự kiện, và Screen, VisualViewport, và BarProp mô hình hoá trạng thái liên quan đến hiển thị. BrowsingContext liên kết một cửa sổ với tài liệu của nó.
Trạng thái Điều hướng
Location và History mô hình địa chỉ và lịch sử phiên; Navigator báo cáo danh tính môi trường, có thể cấu hình qua set_default_user_agent().
Sự kiện
Giao diện EventTarget với họ Event — CustomEvent, UIEvent, MouseEvent, KeyboardEvent, FocusEvent, InputEvent, PopStateEvent, HashChangeEvent, ErrorEvent — thực thi việc phát sự kiện theo tiêu chuẩn. AbortController và AbortSignal cung cấp khả năng hủy.
Lưu trữ và Nhắn tin
Storage mô hình lưu trữ web kiểu khóa-giá trị. MessageChannel, MessagePort, và BroadcastChannel bao gồm việc truyền tin nhắn, với các trợ giúp structured-clone (clone_value) phía sau chúng.
Quan sát và Hiệu năng
IntersectionObserver và ResizeObserver (với các kiểu mục nhập của chúng) mô hình các API quan sát, trong khi Performance, PerformanceEntry, và Console hoàn thiện các kịch bản dịch vụ thời gian chạy mà thường được chạm tới.
Mẹo và Thực hành Tốt nhất
- Chỉ can thiệp lớp này khi xử lý các tài liệu thực sự phụ thuộc vào trạng thái môi trường — việc phân tích và định kiểu không bao giờ cần đến nó.
- Sử dụng
set_default_user_agent()khi logic hạ nguồn phân nhánh dựa trên danh tínhNavigator. - Kết nối
AbortSignalvào quá trình xử lý kéo dài để hủy một cách sạch sẽ
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
| Kịch bản mong đợi các biến toàn cục của window | Tài liệu được viết cho trình duyệt | Cung cấp lớp môi trường Window |
| Sự kiện không bao giờ được kích hoạt | Không có vòng lặp sự kiện nào điều khiển việc gửi | Sử dụng WindowEventLoop |
| Nhánh phụ thuộc vào user-agent hoạt động không đúng | Chuỗi UA mặc định đang có hiệu lực | Được thiết lập qua set_default_user_agent() |
FAQ
Tôi có cần một Window để phân tích HTML không?
Không — lớp môi trường là tùy chọn; việc phân tích, CSSOM và bố cục đều độc lập với nó.
Các loại sự kiện nào được mô hình hoá?
Nhóm tiêu chuẩn: UI, chuột, bàn phím, focus, input, popstate, hashchange, error và các sự kiện tùy chỉnh, tất cả được phát qua EventTarget.
Lưu trữ web có bền vững không?
Storage mô hình bề mặt API cho mục đích xử lý; việc duy trì phụ thuộc vào ứng dụng nhúng.
Tóm tắt API Reference
| Lớp/Phương thức | Mô tả |
|---|---|
Window | Mỏ neo môi trường duyệt |
Location | Trạng thái địa chỉ |
History | Lịch sử phiên làm việc |
EventTarget | Giao diện phân phối sự kiện |
AbortController | Bộ điều khiển hủy |
IntersectionObserver | Quan sát giao điểm |
set_default_user_agent | Cấu hình danh tính Navigator |