JavaScript コンテキスト
JavaScript コンテキスト
スクリプティング層は、必要とするドキュメント向けに制御されたJavaScript評価コンテキストを提供します。これは意図的にポリシー主導であり、モジュール解決は明示的で、失敗は型付き例外として表れます。
評価コンテキスト
JSContext はスクリプト評価をホストします。評価中に発生したエラーは JSEvaluationError として表れ、スクリプトの失敗を Python 側のエラーと区別します。
モジュール読み込み
モジュール解決は ModuleRegistry によって管理され、モジュール指定子を実装にマッピングします。欠落したモジュールは、サイレントにスタブを返すのではなく、ModuleNotFoundError(ライブラリ固有の型付きエラー)を発生させます。
ロードポリシー
ModuleLoadPolicy はコンテキストがロードできるものを制御します — 任意のモジュールアクセスが望ましくないサーバー側処理において、スクリプトの動作をサンドボックス化する仕組みです。
ヒントとベストプラクティス
- 処理シナリオで必要なモジュールだけを登録してください;小さなレジストリこそがサンドボックスです。
JSEvaluationErrorを汎用例外とは別に捕捉し、スクリプトのバグとパイプラインのバグを区別します。ModuleNotFoundErrorを致命的な状態ではなくポリシーシグナルとして扱います — それはしばしば、入力が提供しないことを選択したブラウザ API を期待していることを意味します。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
評価時のModuleNotFoundError | モジュールが登録されていません | それをModuleRegistryに追加するか、ポリシーを調整してください |
| スクリプトの失敗によりパイプラインがクラッシュします | JSEvaluationError が捕捉されていません | 評価境界で処理してください |
| 予期しないモジュールアクセス | ポリシーが緩すぎる | ModuleLoadPolicy を強化する |
FAQ
パースにスクリプト評価は必要ですか?
No — パース、CSSOM、レイアウトはスクリプトコンテキストがなくても動作します。
スクリプトがインポートできるものをどのように制御しますか?
ModuleRegistry(存在するもの) と ModuleLoadPolicy(ロード可能なもの) を通じて。
スクリプトエラーはどのように表れますか?
JSEvaluationError 例外として Python 側で。
API Reference の概要
| クラス/メソッド | 説明 |
|---|---|
JSContext | JavaScript 評価コンテキスト |
ModuleRegistry | モジュール指定子レジストリ |
ModuleLoadPolicy | モジュール読み込みポリシー制御 |
JSEvaluationError | 型付けされたスクリプト評価失敗 |
ModuleNotFoundError | 型付けされた missing-module 失敗 |