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