หน้าต่างและสภาพแวดล้อมการทำงาน
หน้าต่างและสภาพแวดล้อมการทำงาน
เอกสารบางส่วนสมมติว่ามีสภาพแวดล้อมการเรียกดู — หน้าต่าง, ที่ตั้ง, ที่เก็บข้อมูล, เหตุการณ์. ชั้นนี้จำลองวัตถุเหล่านั้นใน 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 เป็นโมเดลการจัดเก็บเว็บแบบคีย์-ค่า. MessageChannel, MessagePort และ BroadcastChannel ครอบคลุมการส่งข้อความ โดยมีตัวช่วย structured-clone (clone_value) อยู่เบื้องหลัง.
ผู้สังเกตและประสิทธิภาพ
IntersectionObserver และ ResizeObserver (พร้อมกับประเภทรายการของพวกมัน) เป็นโมเดลของ API การสังเกต, ในขณะที่ Performance, PerformanceEntry และ Console เติมเต็มสคริปต์บริการรันไทม์ที่มักถูกใช้งาน.
เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
- ควรแตะชั้นนี้เท่าที่จำเป็นเมื่อต้องประมวลผลเอกสารที่จริง ๆ แล้วพึ่งพาสถานะของสภาพแวดล้อม — การแยกวิเคราะห์และการจัดสไตล์ไม่เคยต้องใช้มัน
- ใช้
set_default_user_agent()เมื่อ downstream logic แยกสาขาตามอัตลักษณ์ของNavigator - เชื่อมต่อ
AbortSignalเข้ากับการประมวลผลระยะยาวเพื่อการยกเลิกที่ราบรื่น
ปัญหาที่พบบ่อย
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
| สคริปต์คาดหวัง global ของ window | เอกสารเขียนสำหรับเบราว์เซอร์ | ให้ชั้นสภาพแวดล้อม Window |
| เหตุการณ์ไม่เคยเกิดขึ้น | ไม่มีลูปเหตุการณ์ขับเคลื่อนการกระจาย | ใช้ WindowEventLoop |
| สาขาที่ขึ้นกับ User-agent ทำงานผิดพลาด | สตริง UA เริ่มต้นกำลังใช้งาน | ตั้งค่าผ่าน set_default_user_agent() |
FAQ
ฉันต้องการ Window เพื่อแยกวิเคราะห์ HTML หรือไม่?
ไม่ — ชั้นของสภาพแวดล้อมเป็นทางเลือก; การแยกวิเคราะห์, CSSOM, และการจัดวางทำงานแยกจากมัน.
ประเภทเหตุการณ์ใดบ้างที่ถูกจำลอง?
กลุ่มมาตรฐาน: UI, mouse, keyboard, focus, input, popstate, hashchange, error, และเหตุการณ์ที่กำหนดเองทั้งหมดถูกส่งผ่าน EventTarget.
การจัดเก็บเว็บเป็นแบบถาวรหรือไม่?
Storage จำลองพื้นผิว API เพื่อวัตถุประสงค์การประมวลผล; ความคงอยู่ขึ้นอยู่กับแอปพลิเคชันที่ฝังตัว.
สรุป API Reference
| คลาส/เมธอด | คำอธิบาย |
|---|---|
Window | จุดอ้างอิงสภาพแวดล้อมการท่องเว็บ |
Location | สถานะที่อยู่ |
History | ประวัติการเซสชัน |
EventTarget | อินเทอร์เฟซการกระจายเหตุการณ์ |
AbortController | ตัวควบคุมการยกเลิก |
IntersectionObserver | การสังเกตการตัดกัน |
set_default_user_agent | กำหนดค่าตัวตนของ Navigator |