HPDFXFAExecuteJavaScriptEvent
Unit: HPDFXFAEventScript
Declaration
function HPDFXFAExecuteJavaScriptEvent(const Script: AnsiString;
const Bindings: TXFAEventBindings; SelfIndex: Integer;
const Options: TXFAFormScriptOptions; out Actions: TXFAEventActions;
out Operations: Integer; out Diagnostic: string;
Session: TXFAJavaScriptSession= nil;
HostTransaction: TXFAHostTransaction= nil;
LocaleProvider: TXFALocaleDataProvider= nil;
HostModel: PXFAHostModelState= nil): Boolean;
Behavior
针对实时虚拟表单 DOM 执行事件,返回经过验证的变更记录,而不修改调用方文档
Bindings 提供宿主上下文,SelfIndex 选定 this;Options.EnableJavaScript 必须为 True
Script 与原始绑定文本是 UTF-8 字节,为 JavaScript 源码和带引号上下文做显式解码,而不是按操作系统 ANSI 代码页解释;字面希腊字母、增补标量和 Unicode 行分隔符都保留精确值
使用随附的有界 QuickJS 引擎或 Options.JavaScriptEvaluator,施加脚本、上下文、内存、栈、中断、时间、操作和输出预算
只有引擎执行和输出验证都成功时才返回 True;执行失败会清空 Actions 并报告 Diagnostic
TXFAWidgetRuntime 在自己的快照事务内验证并重放动作;直接调用方必须提供等价的事务处理
原生引擎对可复用的事件支持代码每个会话引擎只编译一次,而每次调用都提供当前绑定向量、事件体、限制以及记录好的宿主、locale、计算与 XML 响应;独立会话和重复脚本对象保留各自独立的状态
支持初始化、事件执行、挂起重试和回滚重建共享原始耗时截止时间;自定义 JavaScriptEvaluator 回调收到完整的独立包装
传入自己持有的 TXFAJavaScriptSession 可跨调用保留脚本对象和词法状态;session 为 nil 时为该调用创建隔离引擎
传入自己持有的 TXFAHostTransaction 以获得显式的应用效果;挂起重试恢复会话检查点并消费记录的响应,不会再次调用已完成请求
更低层调用方必须以自己的文档结果终结宿主事务;宿主效果要求随附引擎,不能使用 JavaScriptEvaluator
LocaleProvider 提供只读 locale 元数据;为 nil 时使用 Windows locale 数据,TXFAWidgetRuntime 则提供当前文档 localeSet 并带系统回退
最近的非空 Locale 绑定提供环境 locale;继承链为空时选择当前用户 locale
计算出的 locale 名称会挂起原生执行、恢复会话检查点,再用记录的元数据重试;已提交的重放消费该元数据,不会再次调用 provider
每次调用最多允许 64 个命名 locale 请求、每个标识符 256 个 UTF-16 code unit 和 2 MiB locale 元数据,共享脚本的耗时截止时间;自定义 JavaScriptEvaluator 回调必须直接消费提供的 locale 数据,不得发起原生查找
HostModel 提供应用元数据、页面、标志、标题和焦点的只读快照;为 nil 时使用 TXFAHostModelState.Default,返回的 host/focus/reset 动作要求调用方以原生事务方式应用
Dynamic FormCalc Eval 会为原生编译挂起,并在同一截止时间内用记录的编译响应重试;自定义 JavaScriptEvaluator 回调无法处理这些请求
指针同步读取,从不保留或写入;TXFAWidgetRuntime 传递当前状态,并在其文档快照事务内应用变更
执行绑定的 EventActivity 提供 xfa.event.name,更低层回退为 event
Live SOM 解析使用绑定层级和当前 occurrence 顺序,支持类与后代选择器及候选谓词,并在省略索引时选定一个推断或默认 occurrence
Data DOM 绑定构建 datasets 树,通过 DataIdentity 连接表单值,支持数据写入和保留的原生数据句柄;直接调用方须以事务方式应用两个域和虚拟标识动作
Property DOM 绑定暴露已声明的属性子节点和 Attributes/DefaultAttributes;直接调用方须把属性原始值和属性动作应用到匹配的原生表单 occurrence
命名字段别名在外层事件作用域可见;事件体内的局部 const、let、class、function 和 var 声明遵循正常 JavaScript 词法规则
事件体保留初始 use strict 指令、表单节点 this 上下文和显式返回值;词法或严格模式失败会拒绝同一原生事务
遮蔽与持久化行为参见 JavaScript Event Scope
Related APIs
Interactive Dynamic XFA Widget Runtime, FormCalc Functions 和 XFA Packet DOM