Portée des événements JavaScript XFA
Unité : HPDFXFAEventScript, intégré via HPDFXFARuntime
Alias nommés et déclarations locales
Le host d'événements résout les nœuds de formulaires nommés éligibles dans la portée d'événement externe ; un événement peut continuer à utiliser input.rawValue quand input est un champ nommé accessible
Le corps d'événement utilisateur a sa propre portée de fonction JavaScript, de sorte que des déclarations const, let et class peuvent shadow un alias de champ sans conflit avec les déclarations de variables générées par le host
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
Les déclarations var et function locales utilisent aussi les règles ordinaires de portée JavaScript ; des bindings locaux explicites shadow un alias externe, et un binding lexical reste indisponible avant son initialisation
Les noms réservés du host et identifiants invalides restent exclus des alias de champs automatiques ; xfa.resolveNode fournit une recherche explicite pour ces noms
Contexte d'exécution et mode strict
Le this du corps d'événement reste le nœud de formulaire en exécution, et une valeur de retour explicite continue de flotter vers le traitement d'achèvement calculate ou validate
Une directive use strict initiale reste désormais la directive du corps utilisateur ; assigner une variable non déclarée lève une exception au lieu de créer un binding global
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
Transactions et durée de vie
Une erreur de syntaxe, ReferenceError de zone morte temporelle ou ReferenceError de mode strict avorte l'événement et restaure son snapshot form/datasets natif, y compris les écritures effectuées avant une erreur d'exécution
Les écritures natives réussies survivent au rechargement du XDP sauvegardé ; les variables d'événement locales appartiennent à cette invocation, tandis que les objets de script variables conservent leur état lexical persistant établi et leur comportement de closure
La portée imbriquée n'ajoute pas d'appels de transport de host et ne change pas les budgets de scripts, mémoire, opérations et replay
API associées
HPDFXFAExecuteJavaScriptEvent, Runtime XFA interactif et Création de propriétés absentes native