HPDFXFAExecuteJavaScriptEvent
Enhet: HPDFXFAEventScript
Deklaration
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;
Beteende
Kör en händelse mot en levande virtuell formulär DOM och returnerar validerade mutationsposter utan att ändra anroparens dokument
Bindings ger värdkontexten och SelfIndex väljer this; Options.EnableJavaScript måste vara True
Script och rå bindningstext är UTF-8-bytes som avkodas explicit för JavaScript-källan och den citerade kontexten i stället för att tolkas med operativsystemets ANSI-kodsida; litterala grekiska bokstäver, kompletterande skalärer och Unicode-radavgränsare behåller sitt exakta värde
Använder den medföljande begränsade QuickJS-motorn eller Options.JavaScriptEvaluator, med budgetar för skript, kontext, minne, stack, avbrott, tid, operationer och utmatning
Returnerar True endast när motorkörning och utmatningsvalidering lyckas; misslyckad körning rensar Actions och rapporterar Diagnostic
TXFAWidgetRuntime validerar och spelar upp åtgärder inom sin egen snapshot-transaktion; direkta anropare måste tillhandahålla motsvarande transaktionshantering
Den nativa motorn kompilerar återanvändbar händelsestödkod en gång per sessionsmotor, medan varje anrop levererar sin aktuella bindningsvektor, händelsekropp, gränser samt inspelade värd-, locale-, beräknings- och XML-svar; separata sessioner och upprepade skriptobjekt behåller oberoende tillstånd
Stödinitiering, händelsekörning, omförsök efter suspension och återuppbyggnad vid rollback delar den ursprungliga tidsfristen; anpassade JavaScriptEvaluator-callbacks får en komplett fristående wrapper
Skicka en ägd TXFAJavaScriptSession för att behålla skriptobjekt och lexikalt tillstånd mellan anrop; en nil-session skapar en isolerad motor för det anropet
Skicka en ägd TXFAHostTransaction för explicita programeffekter; omförsök efter suspension återställer sessionskontrollpunkten och konsumerar inspelade svar utan att anropa redan slutförda förfrågningar igen
Anropare på lägre nivå måste slutföra värdtransaktionen med sitt dokumentresultat; väreffekter kräver den medföljande motorn och kan inte använda JavaScriptEvaluator
LocaleProvider tillhandahåller skrivskyddad locale-metadata; nil använder Windows locale-data, medan TXFAWidgetRuntime levererar dokumentets aktuella localeSet med systemfallback
Närmaste icke-tomma Locale-bindning ger den omgivande localen; en tom ärvd locale väljer aktuella användarens locale
Beräknade locale-namn suspenderar nativ körning, återställer sessionskontrollpunkten och gör omförsök med den inspelade metadatan; committad replay konsumerar den metadatan utan att anropa providern igen
Varje anrop tillåter högst 64 namngivna locale-förfrågningar, 256 UTF-16-kodenheter per identifierare och 2 MiB locale-metadata, delat med skriptets tidsfrist; anpassade JavaScriptEvaluator-callbacks måste konsumera den levererade locale-datan utan att begära nativa uppslag
HostModel ger en skrivskyddad snapshot av programmetadata, sidor, flaggor, titel och fokus; nil använder TXFAHostModelState.Default, och returnerade värd-/fokus-/reset-åtgärder kräver att anroparen tillämpar dem transaktionsbaserat nativt
Dynamisk FormCalc-Eval suspenderar för nativ kompilering och gör omförsök med inspelade kompilerade svar inom samma tidsfrist; anpassade JavaScriptEvaluator-callbacks kan inte betjäna dessa förfrågningar
Pekaren läses synkront och behålls eller skrivs aldrig; TXFAWidgetRuntime skickar sitt aktuella tillstånd och tillämpar mutationer inom sin dokumentsnapshot-transaktion
Den körande bindningens EventActivity ger xfa.event.name, med event som fallback på lägre nivå
Levande SOM-upplösning använder bindningshierarki och aktuell förekomstordning, stöder klass- och ättlingväljare samt kandidatpredikat, och väljer en härledd eller standardförekomst när ett index utelämnas
Data DOM-bindningar bygger datamängdsträdet, kopplar formulärvärden via DataIdentity och stöder dataskrivningar och kvarhållna nativa datahandtag; direkta anropare tillämpar båda domänerna och virtuella identitetsåtgärder transaktionsbaserat
Egenskaps-DOM-bindningar exponerar deklarerade egenskapsbarn och Attributes/DefaultAttributes; direkta anropare tillämpar egenskapers raw-värde- och attributåtgärder på motsvarande nativa formulärförekomst
Namngivna fältalias syns via det yttre händelsescopet; lokala const-, let-, class-, function- och var-deklarationer följer vanliga JavaScript-lexikala regler inuti händelsekroppen
Händelsekroppen bevarar ett inledande use strict-direktiv, sitt formulärnods-this-kontext och explicita returvärden; lexikala fel eller strict-mode-fel avvisar samma nativa transaktion
Se JavaScript Event Scope för beteende kring skuggning och persistens
Relaterade API:er
Interaktiv Dynamic XFA Widget Runtime, FormCalc-funktioner och XFA Packet DOM