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 明確查找
執行 context 與 strict 模式
事件主體的 this 仍是執行中的表單節點,明確的回傳值仍會流入 calculate 或 validate 完成處理
開頭的 use strict 指令現在仍屬於使用者主體;對未宣告變數指派會丟出錯誤,而不是建立全域綁定
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
交易與生命週期
語法錯誤、temporal dead zone 的 ReferenceError 或 strict 模式 ReferenceError 會中止事件,並還原其原生 form/datasets 快照,包括 runtime 錯誤之前已執行的寫入
成功的原生寫入在已存 XDP 重新載入後存活;本地事件變數屬於該次呼叫,variables script 物件則保留其既定的持久語彙狀態與 closure 行為
巢狀範圍不新增 host transport 呼叫,也不改變 script、記憶體、操作與重播預算