XFA JavaScript Event Scope
Unit: HPDFXFAEventScript, integriert über HPDFXFARuntime
Benannte Aliase und lokale Deklarationen
Der Event-Host löst qualifizierte benannte Formularknoten in den äußeren Event-Scope auf; ein Event kann input.rawValue weiter nutzen, wenn input ein zugreifbares benanntes Feld ist
Der User-Event-Body hat seinen eigenen JavaScript-Funktionsscope, sodass const-, let- und class-Deklarationen einen Feldalias überschatten können, ohne mit hostgenerierten Variablendeklarationen zu kollidieren
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
Lokale var- und function-Deklarationen folgen ebenfalls den gewöhnlichen JavaScript-Scope-Regeln; explizite lokale Bindungen überschatten einen äußeren Alias, und eine lexikalische Bindung bleibt vor ihrer Initialisierung unverfügbar
Host-reservierte Namen und ungültige Identifikatoren bleiben von automatischen Feldaliasen ausgeschlossen; xfa.resolveNode bietet explizite Suche für diese Namen
Ausführungskontext und Strict Mode
Das this des Event-Bodys bleibt der ausführende Formularknoten, und ein expliziter Rückgabewert fließt weiter in die Calculate- oder Validate-Abschlussverarbeitung
Eine initiale use-strict-Direktive bleibt nun die Direktive des User-Bodys; die Zuweisung an eine nicht deklarierte Variable wirft, statt eine globale Bindung zu erzeugen
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
Transaktionen und Lifetime
Ein Syntaxfehler, temporal-dead-zone-ReferenceError oder Strict-Mode-ReferenceError bricht das Event ab und stellt seinen nativen Formular-/Datasets-Snapshot wieder her, einschließlich vor einem Runtime-Fehler ausgeführter Schreibvorgänge
Erfolgreiche native Schreibvorgänge überleben das gespeicherte XDP-Neuladen; lokale Event-Variablen gehören zu jenem Aufruf, während Variables-Skriptobjekte ihren etablierten persistenten lexikalischen Zustand und ihr Closure-Verhalten behalten
Der verschachtelte Scope fügt keine Host-Transport-Aufrufe hinzu und ändert keine Skript-, Speicher-, Operations- und Replay-Budgets
Verwandte APIs
HPDFXFAExecuteJavaScriptEvent, Interactive XFA Runtime und Native Absent Property Creation