THotPDF.EvaluateLoadedFieldJavaScript Method
在不啟動 JavaScript engine 的前提下,求值單一已載入欄位動作中受支援的安全子集
宣告
function EvaluateLoadedFieldJavaScript(FieldIndex: Integer;
Trigger: THPDFFormFieldActionTrigger; const InputValue: AnsiString;
out Evaluation: THPDFJavaScriptEvaluationResult): boolean;
結果
至少有一個受支援的動作執行時傳回 True;Evaluation 會回報結果值、驗證是否接受、運算次數與任何拒絕原因
支援的運算式
evaluator 支援 boolean、number、string、null、undefined 與 array literal;讀取欄位與 event.value;陣列索引;算術、一元、比較、相等、短路邏輯與條件運算子;以及對 event.value 或 event.rc 的賦值
allowlist 涵蓋 AFSimple_Calculate、AFRange_Validate、數值與字串轉換、parseFloat、parseInt、isNaN、部分 Math 函式、Date.parse、Date.UTC、Array.isArray,以及有界的字串與陣列屬性和方法
日期運算是確定性的且與時區無關:不帶時區偏移的 ISO 格式輸入按 UTC 解讀,明確的 Z 與數值偏移則會被採用
安全邊界
parser 只接受有界的宣告式計算與驗證,拒絕迴圈、動態求值、存取應用程式、送出、匯入、啟動程式以及其他 active content
每次呼叫的上限為 8,192 位元組的 script、32 個 statement、4,096 位元組的運算式、32 層 parser 深度、1,024 次運算、64 個引數、128 個陣列元素、65,536 位元組的字串,以及 262,144 位元組的追蹤值;超過任一上限都會以 fail-close 方式失敗並回報診斷結果