Âmbito de eventos JavaScript XFA
Unidade: HPDFXFAEventScript, integrada através de HPDFXFARuntime
Aliases nomeados e declarações locais
O host de eventos resolve nós de formulários nomeados elegíveis para o âmbito exterior do evento; um evento pode continuar a usar input.rawValue quando input é um campo nomeado acessível
O corpo de eventos do utilizador tem o âmbito próprio de funções JavaScript dele, pelo que declarações const, let e class podem fazer sombreamento de um alias de campo sem conflitar com declarações de variáveis geradas pelo host
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
Declarações locais de var e de function também usam as regras ordinárias de âmbito JavaScript; bindings locais explícitos fazem sombreamento de um alias exterior, e um binding lexical permanece indisponível antes da inicialização dele
Nomes reservados do host e identificadores inválidos continuam excluídos dos aliases automáticos de campos; xfa.resolveNode fornece consulta explícita para esses nomes
Contexto de execução e modo strict
O this do corpo do evento permanece o nó de formulário em execução, e um valor de return explícito continua a fluir para o processamento de conclusão de calculate ou validate
Uma diretiva inicial use strict agora permanece a diretiva do corpo do utilizador; atribuir a uma variável não declarada lança uma exceção em vez de criar um binding global
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
Transações e tempo de vida
Um erro de sintaxe, um ReferenceError de zona morta temporal ou um ReferenceError de modo strict aborta o evento e restaura o snapshot nativo de formulários/datasets dele, incluindo escritas feitas antes de um erro de runtime
Escritas nativas bem-sucedidas sobrevivem ao recarregamento de XDP guardado; as variáveis locais do evento pertencem a essa invocação, enquanto objetos de variáveis de script mantêm o estado lexical persistente e o comportamento de closures estabelecidos deles
O âmbito aninhado não acrescenta chamadas de transport do host nem altera os orçamentos de scripts, memória, operações e replay
APIs relacionadas
HPDFXFAExecuteJavaScriptEvent, Runtime XFA interativo e Criação nativa de propriedades ausentes