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í