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