HPDFXFAExecuteJavaScriptEvent

Unit: HPDFXFAEventScript

Dichiarazione

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

Esegue un evento contro un form DOM virtuale live e restituisce record di mutazione validati senza modificare il documento del chiamante

Bindings fornisce il contesto host e SelfIndex seleziona this; Options.EnableJavaScript deve essere True

Il testo dello script e dei binding raw sono byte UTF-8, decodificati esplicitamente per la sorgente JavaScript e il contesto quotato invece di essere interpretati con la code page ANSI del sistema operativo; letterali greci, scalari supplementari e separatori di riga Unicode conservano il loro valore esatto

Usa il motore QuickJS delimitato fornito oppure Options.JavaScriptEvaluator, con budget su script, contesto, memoria, stack, interrupt, tempo, operazioni e output

Restituisce True solo quando esecuzione del motore e validazione dell'output hanno successo; l'esecuzione fallita azzera Actions e riporta Diagnostic

TXFAWidgetRuntime valida e riproduce le azioni dentro la propria transazione snapshot; i chiamanti diretti devono fornire una gestione transazionale equivalente

Il motore nativo compila il codice di supporto eventi riutilizzabile una volta per motore di sessione, mentre ogni chiamata fornisce il suo vettore di binding corrente, corpo dell'evento, limiti e risposte registrate di host, locale, calcolo e XML; sessioni separate e script object ripetuti conservano stato indipendente

Inizializzazione del supporto, esecuzione dell'evento, retry di sospensione e ricostruzione del rollback condividono il deadline originale di tempo trascorso; le callback JavaScriptEvaluator personalizzate ricevono un wrapper standalone completo

Passa una TXFAJavaScriptSession di proprietà per conservare script object e stato lessicale tra chiamate; una sessione nil crea un motore isolato per quella chiamata

Passa una TXFAHostTransaction di proprietà per effetti espliciti dell'applicazione; i retry di sospensione ripristinano il checkpoint della sessione e consumano le risposte registrate senza invocare di nuovo le richieste completate

I chiamanti di livello inferiore devono finalizzare la transazione host con l'esito del loro documento; gli effetti host richiedono il motore fornito e non possono usare JavaScriptEvaluator

LocaleProvider fornisce metadati locale di sola lettura; nil usa i dati locale di Windows, mentre TXFAWidgetRuntime fornisce il localeSet corrente del documento con fallback di sistema

Il binding Locale non vuoto più vicino fornisce il locale ambiente; un locale ereditato vuoto seleziona il locale utente corrente

I nomi locale calcolati sospendono l'esecuzione nativa, ripristinano il checkpoint della sessione e riprovano con i metadati registrati; il replay committato consuma quei metadati senza invocare di nuovo il provider

Ogni chiamata ammette al massimo 64 richieste locale nominate, 256 unità di codice UTF-16 per identificatore e 2 MiB di metadati locale, condividendo il deadline di tempo trascorso dello script; le callback JavaScriptEvaluator personalizzate devono consumare i dati locale forniti senza richiedere lookup native

HostModel fornisce uno snapshot di sola lettura di metadati dell'applicazione, pagine, flag, titolo e focus; nil usa TXFAHostModelState.Default, e le azioni host/focus/reset restituite richiedono l'applicazione transazionale nativa da parte del chiamante

L'Eval FormCalc dinamico si sospende per la compilazione nativa e riprova con le risposte compilate registrate dentro lo stesso deadline; le callback JavaScriptEvaluator personalizzate non possono servire queste richieste

Il puntatore viene letto in modo sincrono e mai conservato o scritto; TXFAWidgetRuntime passa il suo stato corrente e applica le mutazioni dentro la sua transazione snapshot del documento

L'EventActivity del binding in esecuzione fornisce xfa.event.name, con event come fallback di livello inferiore

La risoluzione SOM live usa la gerarchia dei binding e l'ordine corrente delle occorrenze, supporta selettori di classe e discendenti e predicati sui candidati, e seleziona una occorrenza inferita o predefinita quando l'indice è omesso

I binding del Data DOM costruiscono l'albero datasets, collegano i valori form attraverso DataIdentity e supportano scritture dati e handle dati nativi conservati; i chiamanti diretti applicano transazionalmente entrambi i domini e le azioni di identità virtuale

I binding del DOM delle proprietà espongono i figli proprietà dichiarati e Attributes/DefaultAttributes; i chiamanti diretti applicano le azioni raw-value e attributo delle proprietà all'occorrenza form nativa corrispondente

Gli alias dei campi nominati sono visibili attraverso lo scope esterno dell'evento; le dichiarazioni locali const, let, class, function e var seguono le normali regole lessicali JavaScript dentro il corpo dell'evento

Il corpo dell'evento preserva una direttiva use strict iniziale, il suo contesto this del nodo form e i valori di ritorno espliciti; i fallimenti lessicali o di strict mode respingono la stessa transazione nativa

Vedi Ambito degli eventi JavaScript per il comportamento di shadowing e persistenza

API correlate

Runtime interattivo dei widget XFA dinamici, Funzioni FormCalc e Packet DOM XFA