ウィンドウとランタイム環境
ウィンドウとランタイム環境
一部の文書は閲覧環境(ウィンドウ、ロケーション、ストレージ、イベント)を前提としています。このレイヤーはそれらのオブジェクトを純粋な Python でモデル化し、ブラウザなしでサーバーサイドで文書を処理できるようにします。
ウィンドウオブジェクト
Window が環境の基盤となり、WindowEventLoop がイベント処理を駆動し、Screen、VisualViewport、BarProp が表示関連の状態をモデル化します。BrowsingContext はウィンドウとその文書を結びつけます。
ナビゲーション状態
Location と History がアドレスとセッション履歴をモデル化し、Navigator が環境の識別子を報告します。set_default_user_agent() を通じて構成可能です。
イベント
The 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 を使用 |
| ユーザーエージェント依存のブランチが誤動作する | デフォルトUA文字列が有効 | set_default_user_agent() を介して設定 |
FAQ
HTML を解析するのに Window が必要ですか?
いいえ — 環境レイヤーはオプションです; 解析、CSSOM、レイアウトはそれに依存しません。
どのイベントタイプがモデル化されていますか?
標準ファミリー: UI、マウス、キーボード、フォーカス、入力、popstate、hashchange、エラー、そしてカスタムイベントはすべて EventTarget を通じてディスパッチされます。
Web ストレージは永続的ですか?
Storage は処理目的のために API 表面をモデル化します;永続性は埋め込みアプリケーション次第です。
API Reference の概要
| クラス/メソッド | 説明 |
|---|---|
Window | 閲覧環境のアンカー |
Location | アドレスの状態 |
History | セッション履歴 |
EventTarget | イベントディスパッチインターフェース |
AbortController | キャンセルコントローラ |
IntersectionObserver | 交差点観測 |
set_default_user_agent | Navigator アイデンティティを構成する |