XFA JavaScript 事件作用域

单元:HPDFXFAEventScript,经 HPDFXFARuntime 集成

具名别名与本地声明

事件宿主把合格的具名表单节点解析进外层事件作用域;input 是可访问的具名字段时,事件可以继续使用 input.rawValue

用户事件体有自己的 JavaScript 函数作用域,const、let 与 class 声明可以遮蔽字段别名,不会与宿主生成的变量声明冲突

const input = xfa.resolveNode("main.input");
input.rawValue = "saved";

本地 var 与 function 声明同样遵循普通 JavaScript 作用域规则;显式本地绑定遮蔽外层别名,词法绑定在初始化前不可用

宿主保留名与非法标识符仍被排除在自动字段别名之外;这些名称可用 xfa.resolveNode 显式查找

执行上下文与 strict 模式

事件体的 this 仍是正在执行的表单节点,显式返回值继续流向 calculate 或 validate 完成处理

开头的 use strict 指令现在保持为用户体指令;给未声明变量赋值会抛错而不是创建全局绑定

"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;

事务与生命周期

语法错误、暂时性死区 ReferenceError 或 strict 模式 ReferenceError 会中止事件并还原其原生 form/datasets 快照,包括运行时错误之前已执行的写入

成功的原生写入在保存的 XDP 重载后仍存在;本地事件变量属于该次调用,variables 脚本对象保持既定持久词法状态与闭包行为

嵌套作用域不增加 host transport 调用,也不改变脚本、内存、操作与重放预算

相关 API

HPDFXFAExecuteJavaScriptEvent, 交互式 XFA 运行时和 原生缺失属性创建