ウィンドウとランタイム環境

ウィンドウとランタイム環境

ウィンドウとランタイム環境

一部の文書は閲覧環境(ウィンドウ、ロケーション、ストレージ、イベント)を前提としています。このレイヤーはそれらのオブジェクトを純粋な 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_agentNavigator アイデンティティを構成する

参照

 日本語