HPDFXFAExecuteJavaScriptEvent

Unit: HPDFXFAEventScript

Declaración

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;

Comportamiento

Ejecuta un evento contra un Form DOM virtual en vivo y devuelve records de mutación validados sin modificar el documento del llamador

Bindings suministra el contexto del host y SelfIndex selecciona this; Options.EnableJavaScript debe ser True

El Script y el texto de bindings crudo son bytes UTF-8, decodificados explícitamente para el código fuente JavaScript y el contexto entrecomillado en lugar de interpretarse con la página de códigos ANSI del sistema operativo; los literales griegos, los escalares suplementarios y los separadores de línea Unicode conservan su valor exacto

Usa el engine QuickJS acotado incluido o Options.JavaScriptEvaluator, con presupuestos de script, contexto, memoria, stack, interrupción, tiempo, operaciones y salida

Devuelve True solo cuando la ejecución del engine y la validación de salida tienen éxito; la ejecución fallida limpia Actions y reporta Diagnostic

TXFAWidgetRuntime valida y repliquea las acciones dentro de su propia transacción de snapshot; los llamadores directos deben proveer un manejo transaccional equivalente

El engine nativo compila el código de soporte de eventos reutilizable una vez por engine de sesión, mientras que cada llamada suministra su vector de bindings actual, cuerpo del evento, límites y el host, locale, cálculo y respuestas XML grabados; las sesiones separadas y los script objects repetidos retienen estado independiente

La inicialización de soporte, la ejecución del evento, los reintentos de suspensión y la reconstrucción de rollback comparten el deadline original de tiempo transcurrido; los callbacks personalizados de JavaScriptEvaluator reciben un wrapper independiente completo

Pasa un TXFAJavaScriptSession propio para retener script objects y estado léxico entre llamadas; una sesión nil crea un engine aislado para esa llamada

Pasa un TXFAHostTransaction propio para efectos explícitos de la aplicación; los reintentos de suspensión restauran el checkpoint de la sesión y consumen las respuestas grabadas sin invocar de nuevo las solicitudes completadas

Los llamadores de nivel inferior deben finalizar la transacción del host con el resultado de su documento; los efectos de host requieren el engine incluido y no pueden usar JavaScriptEvaluator

LocaleProvider suministra metadatos de locale de solo lectura; nil usa los datos de locale de Windows, mientras que TXFAWidgetRuntime suministra el localeSet actual del documento con fallback del sistema

El binding Locale no vacío más cercano suministra el locale ambiente; un locale heredado vacío selecciona el locale actual del usuario

Los nombres de locale calculados suspenden la ejecución nativa, restauran el checkpoint de la sesión y reintentan con los metadatos grabados; el replay confirmado consume esos metadatos sin invocar de nuevo al provider

Cada llamada permite como máximo 64 solicitudes de locale con nombre, 256 unidades de código UTF-16 por identificador y 2 MiB de metadatos de locale, compartiendo el deadline transcurrido del script; los callbacks personalizados de JavaScriptEvaluator deben consumir los datos de locale suministrados sin solicitar lookups nativos

HostModel suministra un snapshot de solo lectura de metadatos de la aplicación, páginas, flags, título y foco; nil usa TXFAHostModelState.Default, y las acciones devueltas de host/focus/reset requieren aplicación transaccional nativa por parte del llamador

Dynamic FormCalc Eval se suspende para compilación nativa y reintenta con respuestas compiladas grabadas dentro del mismo deadline; los callbacks personalizados de JavaScriptEvaluator no pueden atender estas solicitudes

El puntero se lee de forma síncrona y nunca se retiene ni se escribe; TXFAWidgetRuntime pasa su estado actual y aplica las mutaciones dentro de su transacción de snapshot del documento

El EventActivity del binding en ejecución suministra xfa.event.name, con event como fallback de nivel inferior

La resolución SOM en vivo usa la jerarquía de bindings y el orden actual de ocurrencias, soporta selectores de clase y descendientes y predicados sobre candidatos, y selecciona una ocurrencia inferida o por defecto cuando se omite el índice

Los bindings del Data DOM construyen el árbol datasets, conectan valores de formulario mediante DataIdentity y soportan escrituras de datos y handles nativos de datos retenidos; los llamadores directos aplican ambos dominios y las acciones de identidad virtual de forma transaccional

Los bindings del Property DOM exponen los hijos de propiedades declaradas y Attributes/DefaultAttributes; los llamadores directos aplican las acciones de raw-value y atributos de propiedades a la ocurrencia nativa de formulario correspondiente

Los alias de campos con nombre son visibles a través del ámbito exterior del evento; las declaraciones locales const, let, class, function y var siguen las reglas léxicas normales de JavaScript dentro del cuerpo del evento

El cuerpo del evento preserva una directiva use strict inicial, su contexto this de nodo de formulario y los valores de retorno explícitos; los fallos léxicos o de modo strict rechazan la misma transacción nativa

Consulta JavaScript Event Scope para el comportamiento de shadowing y persistencia

APIs relacionadas

Interactive Dynamic XFA Widget Runtime, Funciones de FormCalc y XFA Packet DOM