Scope de eventos JavaScript de XFA
Unit: HPDFXFAEventScript, integrado a través de HPDFXFARuntime
Aliases con nombre y declaraciones locales
El host de eventos resuelve los nodos de formulario con nombre elegibles en el scope de evento externo; un evento puede seguir usando input.rawValue cuando input es un campo con nombre accesible
El body del evento de usuario tiene su propio scope de función JavaScript, así las declaraciones const, let y class pueden hacer shadowing de un alias de campo sin conflicto con las declaraciones de variables generadas por el host
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
Las declaraciones locales var y function también usan las reglas ordinarias de scope JavaScript; los bindings locales explícitos tapan un alias externo, y un binding léxico queda inaccesible antes de su inicialización
Los nombres reservados por el host y los identificadores inválidos siguen excluidos de los aliases automáticos de campos; xfa.resolveNode aporta lookup explícito para esos nombres
Contexto de ejecución y modo strict
El this del body del evento sigue siendo el nodo de formulario en ejecución, y un valor de retorno explícito sigue fluyendo hacia el procesamiento de finalización calculate o validate
Una directiva use strict inicial ahora permanece como directiva del body del usuario; asignar a una variable no declarada lanza en lugar de crear un binding global
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
Transacciones y lifetime
Un error de sintaxis, un ReferenceError de zona muerta temporal o un ReferenceError de modo strict aborta el evento y restaura su instantánea nativa de form/datasets, incluidas las escrituras realizadas antes de un error de runtime
Las escrituras nativas con éxito sobreviven a la recarga del XDP guardado; las variables locales del evento pertenecen a esa invocación, mientras que los objetos de script variables retienen su estado léxico persistente y comportamiento de closures establecidos
El scope anidado no añade llamadas de transporte del host ni cambia los presupuestos de scripts, memoria, operaciones y replay
APIs relacionadas
HPDFXFAExecuteJavaScriptEvent, Runtime XFA interactivo y Creación nativa de propiedades ausentes