XFA JavaScript Event Scope
Unit: HPDFXFAEventScript, geïntegreerd via HPDFXFARuntime
Benoemde aliassen en lokale declaraties
De event-host lost in aanmerking komende benoemde formulier-nodes op in de outer event-scope; een event kan input.rawValue blijven gebruiken wanneer input een toegankelijk benoemd veld is
De user event-body heeft diens eigen JavaScript-functie-scope, dus const-, let- en class-declaraties kunnen een veldalias schaduwen zonder conflict met host-gegenereerde variabelendeclaraties
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
Lokale var- en functiedeclaraties gebruiken ook gewone JavaScript-scope-regels; expliciete lokale bindings schaduwen een outer alias, en een lexicale binding blijft onbeschikbaar vóór diens initialisatie
Host-gereserveerde namen en ongeldige identifiers blijven uitgesloten van automatische veld-aliassen; xfa.resolveNode levert expliciete opzoek voor die namen
Executiecontext en strict mode
De this van de event-body blijft de uitvoerende formulier-node, en een expliciete return-waarde blijft naar calculate- of validate-afrondingsverwerking vloeien
Een initiële use strict-directive blijft nu de directive van de user-body; een niet-gedeclareerde variabele toewijzen gooit in plaats van een globale binding te creëren
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
Transacties en levensduur
Een syntaxfout, temporal-dead-zone ReferenceError of strict-mode ReferenceError breekt het event af en herstelt diens native formulier/datasets-snapshot, inclusief writes die vóór een runtimefout werden uitgevoerd
Geslaagde native writes overleven opgeslagen XDP-herladen; lokale event-variabelen horen bij die invocatie, terwijl variabelen die script-objecten vasthouden diens gevestigde persistente lexicale status en closure-gedrag behouden
De nested scope voegt geen host transport-aanroepen toe en wijzigt script-, geheugen-, operation- en replay-budgetten niet
Related APIs
HPDFXFAExecuteJavaScriptEvent, Interactive XFA Runtime en Native Absent Property Creation