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