หน้าต่างและสภาพแวดล้อมการทำงาน

หน้าต่างและสภาพแวดล้อมการทำงาน

หน้าต่างและสภาพแวดล้อมการทำงาน

เอกสารบางส่วนสมมติว่ามีสภาพแวดล้อมการเรียกดู — หน้าต่าง, ที่ตั้ง, ที่เก็บข้อมูล, เหตุการณ์. ชั้นนี้จำลองวัตถุเหล่านั้นใน 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

ดูเพิ่มเติม

 ภาษาไทย