HPDFXFAExecuteJavaScriptEvent
Unit: HPDFXFAEventScript
Deklarace
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;
Chování
Provede událost nad živým virtuálním form DOM a vrátí validované mutační záznamy, aniž by změnil dokument volajícího
Bindingy dodají host kontext a SelfIndex vybere this; Options.EnableJavaScript musí být True
Text skriptu i surových bindingů jsou UTF-8 bajty, explicitně dekódované pro zdroj JavaScriptu i citovaný kontext, namísto interpretace přes ANSI kódovou stránku operačního systému; literální řečtina, supplementární skaláry i Unicode oddělovače řádků si uchovají svou přesnou hodnotu
Použije dodávaný ohraničený engine QuickJS či Options.JavaScriptEvaluator, s rozpočty skriptu, kontextu, paměti, zásobníku, přerušení, času, operací i výstupu
Vrací True jen tehdy, když uspěje provedení engine i validace výstupu; neúspěšné provedení vymaže Actions a reportuje Diagnostic
TXFAWidgetRuntime akce validuje a přehraje v rámci vlastní snapshot transakce; přímí volající musí dodávat ekvivalentní transakční zpracování
Nativní engine jednou na engine sezení přeloží opakovaně použitelný podpůrný kód událostí, zatímco každé volání dodá svůj aktuální binding vektor, tělo události, limity i zaznamenané odpovědi hostitele, locale, výpočtů i XML; samostatná sezení i opakované skriptové objekty si uchovávají nezávislý stav
Inicializace podpory, provedení události, retry při pozastavení i rekonstrukce rollbacku sdílejí původní deadline uplynulého času; vlastní callbacky JavaScriptEvaluator dostanou kompletní samostatnou obálku
Pro držení skriptových objektů i lexického stavu napříč voláními předejte vlastněné TXFAJavaScriptSession; nil sezení vytvoří pro to volání izolovaný engine
Pro explicitní aplikační efekty předejte vlastněné TXFAHostTransaction; retry při pozastavení obnoví checkpoint sezení a konzumují zaznamenané odpovědi, aniž by znovu vyvolaly dokončené žádosti
Nížeúrovňoví volající musí finalizovat host transakci podle výsledku svého dokumentu; host efekty vyžadují dodávaný engine a nemohou používat JavaScriptEvaluator
LocaleProvider dodá read-only locale metadata; nil použije Windows locale data, zatímco TXFAWidgetRuntime dodá localeSet aktuálního dokumentu se systémovým fallbackem
Ambientní locale dodá nejbližší neprázdný binding Locale; prázdná zděděná locale vybere aktuální user locale
Spočtené locale názvy pozastaví nativní provedení, obnoví checkpoint sezení a zkusí znovu s zaznamenanými metadaty; potvrzený replay ta metadata konzumuje, aniž by volal provider znovu
Každé volání dovolí nejvýše 64 pojmenovaných locale žádostí, 256 UTF-16 code unit na identifikátor a 2 MiB locale metadat, se sdíleným skriptovým deadlinem uplynulého času; vlastní callbacky JavaScriptEvaluator musí konzumovat dodaná locale data, aniž by žádaly nativní vyhledání
HostModel dodá read-only snapshot aplikačních metadat, stránek, příznaků, titulku i fokusu; nil použije TXFAHostModelState.Default a vrácené akce host/focus/reset vyžadují nativní transakční aplikaci volajícím
Dynamický FormCalc Eval se pozastaví kvůli nativnímu překladu a zkusí znovu se zaznamenanými přeloženými odpověďmi v rámci téže deadline; vlastní callbacky JavaScriptEvaluator ty žádosti obsloužit nemohou
Pointer se čte synchronně a nikdy se nedrží ani nezapisuje; TXFAWidgetRuntime předá svůj aktuální stav a aplikuje mutace v rámci své dokumentové snapshot transakce
EventActivity prováděcího bindingu dodá xfa.event.name, s event jako nížeúrovňovým fallbackem
Živé SOM rozřešení použije hierarchii bindingů i aktuální pořadí výskytů, podporuje selektory tříd a potomků i kandidátní predikáty a při vynechaném indexu vybere jeden odvozený či defaultní výskyt
Bindingy Data DOM postaví strom datasets, propojí form hodnoty přes DataIdentity a podporují datové zápisy i držené nativní datové handly; přímí volající aplikují obě domény i akce virtuální identity transakčně
Bindingy Property DOM vystaví deklarované property potomky a Attributes/DefaultAttributes; přímí volající aplikují akce property raw-value i atributů na odpovídající nativní form výskyt
Pojmenované aliasy polí jsou viditelné přes vnější scope události; lokální deklarace const, let, class, function a var řídí uvnitř těla události běžná JavaScriptová lexická pravidla
Tělo události zachová počáteční direktivu use strict, svůj this kontext form uzlu i explicitní návratové hodnoty; lexická či strict-mode selhání odmítnou tutéž nativní transakci
Chování zastínění a perzistence popisuje JavaScript Event Scope
Související API
Interactive Dynamic XFA Widget Runtime, FormCalc Functions a XFA Packet DOM