Â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