HPDFXFAExecuteJavaScriptEvent

Unidade: HPDFXFAEventScript

Declaration

function HPDFXFAExecuteJavaScriptEvent(const Script: AnsiString;
  const Bindings: TXFAEventBindings; SelfIndex: Integer;
  const Options: TXFAFormScriptOptions; out Actions: TXFAEventActions;
  out Operations: Integer; out Diagnostic: string;
  Session: TXFAJavaScriptSession= nil;
  HostTransaction: TXFAHostTransaction= nil;
  LocaleProvider: TXFALocaleDataProvider= nil;
  HostModel: PXFAHostModelState= nil): Boolean;

Comportamento

Executa um evento contra um DOM virtual vivo de formulários e devolve registos validados de mutações sem alterar o documento de quem chama

Bindings fornecem o contexto de host e SelfIndex seleciona this; Options.EnableJavaScript tem de ser True

O script e o texto de bindings em bruto são bytes UTF-8, descodificados explicitamente para a fonte JavaScript e o contexto entre aspas em vez de serem interpretados pela página de código ANSI do sistema operativo; Grego literal, scalars suplementares e separadores de linhas Unicode mantêm o valor exato deles

Usa o motor QuickJS delimitado distribuído ou Options.JavaScriptEvaluator, com orçamentos de scripts, contexto, memória, stack, interrupções, tempo, operações e saída

Devolve True apenas quando a execução do motor e a validação da saída têm sucesso; execução falhada limpa Actions e reporta Diagnostic

TXFAWidgetRuntime valida e reproduz ações dentro da transação de snapshots própria dele; quem chama diretamente tem de fornecer tratamento transacional equivalente

O motor nativo compila código reutilizável de suporte de eventos uma vez por motor de sessão, enquanto cada chamada fornece o vetor atual de bindings, corpo do evento, limites e respostas registadas de host, locale, cálculo e XML; sessões separadas e objetos de scripts repetidos mantêm estado independente

Inicialização de suporte, execução de eventos, retries de suspensão e reconstrução de rollback partilham o prazo original de tempo decorrido; callbacks personalizados de JavaScriptEvaluator recebem um wrapper autónomo completo

Passe uma TXFAJavaScriptSession própria para manter objetos de scripts e estado lexical através de chamadas; uma sessão nil cria um motor isolado para essa chamada

Passe uma TXFAHostTransaction própria para efeitos explícitos de aplicações; retries de suspensão restauram o checkpoint da sessão e consomem as respostas registadas sem invocar novamente pedidos concluídos

Quem chama a um nível mais baixo tem de finalizar a transação do host com o desfecho do documento dele; efeitos de host exigem o motor distribuído e não podem usar JavaScriptEvaluator

LocaleProvider fornece metadados só de leitura de locales; nil usa dados de locales de Windows, enquanto TXFAWidgetRuntime fornece o localeSet atual do documento com fallback do sistema

O binding Locale não vazio mais próximo fornece o locale ambiente; um locale herdado vazio seleciona o locale atual do utilizador

Nomes de locales calculados suspendem a execução nativa, restauram o checkpoint da sessão e repetem com os metadados registados; o replay confirmado consome esses metadados sem invocar o fornecedor outra vez

Cada chamada permite no máximo 64 pedidos nomeados de locales, 256 unidades de código UTF-16 por identificador e 2 MiB de metadados de locales, partilhando o prazo de scripts decorrido; callbacks personalizados de JavaScriptEvaluator têm de consumir os dados de locales fornecidos sem pedir consultas nativas

HostModel fornece um snapshot só de leitura de metadados da aplicação, páginas, flags, título e foco; nil usa TXFAHostModelState.Default, e ações devolvidas de host/foco/reset exigem aplicação transacional nativa por quem chama

Eval dinâmico de FormCalc suspende para compilação nativa e repete com respostas compiladas registadas dentro do mesmo prazo; callbacks personalizados de JavaScriptEvaluator não podem servir estes pedidos

O ponteiro é lido sincronamente e nunca é retido nem escrito; TXFAWidgetRuntime passa o estado atual dele e aplica mutações dentro da transação de snapshots de documentos dele

O EventActivity do binding em execução fornece xfa.event.name, com event como fallback de nível mais baixo

A resolução SOM viva usa a hierarquia de bindings e a ordem atual de ocorrências, suporta seletores de classes e de descendentes e predicados de candidatos, e seleciona uma ocorrência inferida ou por defeito quando um índice é omitido

Bindings do Data DOM constroem a árvore de datasets, ligam valores de formulários através de DataIdentity e suportam escritas de dados e handles nativos retidos de dados; quem chama diretamente aplica ambos os domínios e ações de identidades virtuais transacionalmente

Bindings do Property DOM expõem filhos de propriedades declaradas e Attributes/DefaultAttributes; quem chama diretamente aplica ações de valores em bruto e de atributos de propriedades à ocorrência nativa correspondente de formulários

Aliases nomeados de campos são visíveis através do âmbito exterior do evento; declarações locais de const, let, class, function e var seguem as regras lexicais normais de JavaScript dentro do corpo do evento

O corpo do evento preserva uma diretiva inicial use strict, o contexto this de nós de formulários dele e valores de return explícitos; falhas lexicais ou de modo strict rejeitam a mesma transação nativa

Veja o âmbito de eventos JavaScript para o comportamento de sombreamento e de persistência

APIs relacionadas

Runtime interativo de widgets XFA dinâmicos, Funções FormCalc e XFA Packet DOM