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