XFA JavaScript Event Scope
Unit: HPDFXFAEventScript, integrovaná přes HPDFXFARuntime
Pojmenované aliasy a lokální deklarace
Hostitel události rozřeší způsobilé pojmenované form uzly do vnějšího scope události; událost může dál používat input.rawValue, když je input dostupné pojmenované pole
Tělo user události má vlastní JavaScript function scope, takže deklarace const, let a class můžou zastínit alias pole, aniž by kolidovaly s deklaracemi proměnných generovanými hostitelem
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
Lokální deklarace var a function taky řídí běžná JavaScript scope pravidla; explicitní lokální binding zastíní vnější alias a lexický binding zůstává nedostupný před svou inicializací
Jména rezervovaná hostitelem a neplatné identifikátory zůstávají z automatických aliasů polí vyňaté; xfa.resolveNode pro ty názvy poskytuje explicitní vyhledání
Execution kontext a strict mode
this těla události zůstává vykonávaným form uzlem a explicitní návratová hodnota dál teče do zpracování dokončení calculate či validate
Počáteční direktiva use strict teď zůstává direktivou uživatelského těla; přiřazení nadeklarované proměnné hodí výjimku, místo aby vytvořilo globální binding
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
Transakce a životnost
Syntaktická chyba, temporal-dead-zone ReferenceError či strict-mode ReferenceError přeruší událost a obnoví její nativní snapshot form/datasets, tedy i zápisy provedené před runtime chybou
Úspěšné nativní zápisy přežijí uložení a reload XDP; lokální proměnné události patří tomu vyvolání, zatímco variables skriptové objekty si uchovávají své zavedené perzistentní lexické pozice a chování closures
Vnořený scope nepřidává volání host transportu ani nemění limity skriptů, paměti, operací i replay
Související API
HPDFXFAExecuteJavaScriptEvent, Interactive XFA Runtime a Nativní vytváření chybějících vlastností