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