윈도우 및 런타임 환경
윈도우 및 런타임 환경
일부 문서는 브라우징 환경(윈도우, 위치, 저장소, 이벤트)을 전제로 합니다. 이 레이어는 순수 Python에서 이러한 객체들을 모델링하여 브라우저 없이도 서버 측에서 해당 문서를 처리할 수 있게 합니다.
윈도우 객체
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는 메시지 전달을 다루며, 그 뒤에는 구조 복제 헬퍼(clone_value)가 있습니다.
옵저버와 성능
IntersectionObserver와 ResizeObserver(엔트리 타입 포함)은 관찰 API를 모델링하고, Performance, PerformanceEntry, 그리고 Console는 일반적으로 다루는 런타임 서비스 스크립트를 완성합니다.
팁 및 모범 사례
- 환경 상태에 실제로 의존하는 문서를 처리할 때만 이 레이어를 건드리세요 — 파싱과 스타일링은 절대 필요하지 않습니다.
Navigator정체성에 따라 하위 로직이 분기될 때set_default_user_agent()를 사용하세요.- 깨끗한 취소를 위해 장기 실행 처리에
AbortSignal를 연결합니다
일반적인 문제
| 문제 | 원인 | 해결 |
|---|---|---|
| 스크립트가 window 전역 변수를 기대합니다 | 문서는 브라우저용으로 작성되었습니다 | Window 환경 레이어를 제공하십시오 |
| 이벤트가 전혀 발생하지 않습니다 | 디스패치를 구동하는 이벤트 루프가 없습니다 | WindowEventLoop 사용 |
| User-agent 의존 브랜치가 오작동한다 | 기본 UA 문자열이 적용 중 | set_default_user_agent()을(를) 통해 설정 |
FAQ
HTML를 구문 분석하려면 Window가 필요합니까?
아니요 — 환경 레이어는 선택 사항이며, 구문 분석, CSSOM 및 레이아웃은 그것과 독립적입니다.
모델링된 이벤트 유형은 무엇입니까?
표준 패밀리: UI, 마우스, 키보드, 포커스, 입력, popstate, hashchange, error 및 사용자 정의 이벤트가 모두 EventTarget를 통해 디스패치됩니다.
웹 스토리지는 지속적인가요?
Storage는 처리 목적을 위해 API 표면을 모델링합니다; 지속성은 포함 애플리케이션에 달려 있습니다.
API Reference 요약
| 클래스/메서드 | 설명 |
|---|---|
Window | 브라우징 환경 앵커 |
Location | 주소 상태 |
History | 세션 기록 |
EventTarget | 이벤트 디스패치 인터페이스 |
AbortController | 취소 컨트롤러 |
IntersectionObserver | 교차점 관찰 |
set_default_user_agent | Navigator 신원 구성 |