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 eventos 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í que 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 de JavaScript; los bindings locales explícitos hacen shadowing de un alias externo, y un binding léxico permanece no disponible antes de su inicialización
Los nombres reservados del 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 strict mode
El this del body del evento sigue siendo el nodo de formulario en ejecución, y un valor de retorno explícito sigue fluyendo al procesamiento de finalización calculate o validate
Una directiva use strict inicial ahora permanece como directiva del body del usuario; asignar una variable no declarada lanza una excepción 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 temporal dead zone o un ReferenceError de strict mode aborta el evento y restaura su instantánea nativa de form/datasets, incluidas las escrituras realizadas antes de un runtime error
Las escrituras nativas exitosas sobreviven a la recarga del XDP guardado; las variables locales del evento pertenecen a esa invocación, mientras que los objetos de script variables conservan su estado léxico persistente establecido y su comportamiento de closures
El scope anidado no agrega llamadas de transporte del host ni cambia los presupuestos de script, memoria, operaciones y replay
APIs relacionadas
HPDFXFAExecuteJavaScriptEvent, Runtime XFA interactivo y Creación de propiedades ausentes nativa