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 host y SelfIndex selecciona this; Options.EnableJavaScript debe ser True

El script y el texto crudo de los bindings son bytes UTF-8, decodificados explícitamente para el fuente JavaScript y el contexto entre comillas en lugar de interpretarse con la code page 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, pila, interrupción, tiempo, operación y salida

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

TXFAWidgetRuntime valida y repite las acciones dentro de su propia transacción de snapshot; los llamadores directos deben proporcionar 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, el cuerpo del evento, los límites y las respuestas grabadas de host, locale, cálculo y XML; las sesiones separadas y los script objects repetidos retienen estado independiente

La inicialización del soporte, la ejecución del evento, los reintentos de suspensión y la reconstrucción de rollback comparten el plazo de tiempo transcurrido original; los callbacks personalizados de JavaScriptEvaluator reciben un wrapper standalone 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 peticiones ya completadas

Los llamadores de nivel inferior deben finalizar la transacción host con el resultado de su documento; los efectos host exigen 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 aporta 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; la repetición confirmada consume esos metadatos sin invocar de nuevo al provider

Cada llamada admite como máximo 64 peticiones de locale con nombre, 256 unidades de código UTF-16 por identificador y 2 MiB de metadatos de locale, compartiendo el plazo de tiempo del script; los callbacks personalizados de JavaScriptEvaluator deben consumir los datos de locale suministrados sin pedir búsquedas nativas

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 de host/focus/reset devueltas exigen su aplicación transaccional nativa por parte del llamador

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

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 de ocurrencias actual, soporta selectores de clase y descendientes y predicados de candidato, y selecciona una ocurrencia inferida o por defecto cuando se omite el índice

Los bindings del Data DOM construyen el árbol de datasets, conectan los valores del formulario mediante DataIdentity y soportan escrituras de datos y handles de datos nativos 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 de atributos de propiedades a la ocurrencia nativa del formulario correspondiente

Los alias de campos con nombre son visibles a través del ámbito exterior del evento; las declaraciones locales de 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 strict mode rechazan la misma transacción nativa

Consulta JavaScript Event Scope para el comportamiento de shadowing y persistencia

APIs relacionadas

Interactive Dynamic XFA Widget Runtime, FormCalc Functions y XFA Packet DOM