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、記憶體、操作與重播預算

相關 API

HPDFXFAExecuteJavaScriptEvent、互動式 XFA Runtime與原生缺席屬性建立