Scope för XFA JavaScript-events

Unit: HPDFXFAEventScript, integrerad via HPDFXFARuntime

Namngivna alias och lokala deklarationer

Event-värden löser kvalificerade namngivna formulärnoder in i den yttre event-scopen; ett event kan fortsätta använda input.rawValue när input är ett tillgängligt namngivet fält

Användarens event-kropp har sin egen JavaScript-funktionscope, så const-, let- och class-deklarationer kan överskugga ett fältalias utan att krocka med värdens genererade variabeldeklarationer

const input = xfa.resolveNode("main.input");
input.rawValue = "saved";

Lokala var- och funktionsdeklarationer följer också ordinarie JavaScript-scope-regler; explicita lokala bindningar överskuggar ett yttre alias, och en lexikal bindning är otillgänglig före sin initiering

Värdreserverade namn och ogiltiga identifierater utesluts fortsättningsvis från automatiska fältalias; xfa.resolveNode ger explicit uppslagning för de namnen

Körningskontext och strict mode

Event-kroppens this förblir den körande formulärnoden, och ett explicit returvärde fortsätter att flöda vidare till efterbehandlingen av calculate eller validate

Ett inledande use strict-direktiv tillhör nu användarens kropp; tilldelning av en odeklarerad variabel kastar undantag i stället för att skapa en global bindning

"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;

Transaktioner och livstid

Ett syntaxfel, ReferenceError från temporal dead zone eller ReferenceError i strict mode avbryter eventet och återställer dess nativa form/datasets-snapshot, inklusive skrivningar som gjorts före ett runtime-fel

Framgångsrika nativa skrivningar överlever omläsning av sparad XDP; lokala eventvariabler tillhör det anropet, medan variables-skriptobjekt behåller sitt etablerade persistenta lexikala tillstånd och closure-beteende

Den nästlade scopèn lägger inte till host transport-anrop och ändrar inte budgetar för skript, minne, operationer och replay

Relaterade API:er

HPDFXFAExecuteJavaScriptEvent, Interaktiv XFA Runtime och Native Absent Property Creation