JavaScript 上下文

JavaScript 上下文

脚本层为需要的文档提供受控的 JavaScript 评估上下文。它是有意基于策略的:模块解析是显式的,失败会以类型化异常的形式呈现。


评估上下文

JSContext 托管脚本评估。评估期间抛出的错误以 JSEvaluationError 形式呈现,使脚本失败与 Python 端错误区分开来。

模块加载

模块解析受 ModuleRegistry 监管,它将模块说明符映射到实现。缺失的模块会抛出 ModuleNotFoundError(库自定义的类型化错误),而不是静默返回存根。

加载策略

ModuleLoadPolicy 控制上下文允许加载的内容——这是在服务器端处理时对脚本行为进行沙箱化的机制,避免任意模块访问。


提示与最佳实践

  • 仅注册处理场景所需的模块;小型注册表即是沙箱
  • 将 JSEvaluationError 与通用异常分开捕获,以区分脚本错误和管道错误
  • 将 ModuleNotFoundError 视为策略信号,而非致命条件——它通常表示输入期望一个您未提供的浏览器 API

常见问题

问题原因修复
ModuleNotFoundError 在评估时模块未注册将其添加到 ModuleRegistry 或调整策略
脚本失败导致流水线崩溃未捕获 JSEvaluationError在评估边界处理它
意外的模块访问策略过于宽松收紧 ModuleLoadPolicy

FAQ

解析是否需要脚本求值?

不——解析、CSSOM 和布局在没有任何脚本上下文的情况下也能工作。

我如何控制脚本可以导入什么?

通过 ModuleRegistry(已存在的)和 ModuleLoadPolicy(可能加载的)。

脚本错误如何呈现?

作为 JSEvaluationError 异常在 Python 端。


API Reference 摘要

类/方法描述
JSContextJavaScript 评估上下文
ModuleRegistry模块标识符注册表
ModuleLoadPolicy模块加载策略控制
JSEvaluationError类型化脚本评估失败
ModuleNotFoundError类型缺失模块失败

另请参阅

 中文