JavaScript コンテキスト

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 の概要

クラス/メソッド説明
JSContextJavaScript 評価コンテキスト
ModuleRegistryモジュール指定子レジストリ
ModuleLoadPolicyモジュール読み込みポリシー制御
JSEvaluationError型付けされたスクリプト評価失敗
ModuleNotFoundError型付けされた missing-module 失敗

参照

 日本語