HPDFXFAExecuteJavaScriptEvent

Unit: 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;

Verhalten

Führt ein Ereignis gegen ein Live-virtuelles Formular-DOM aus und liefert validierte Mutations-Records zurück, ohne das Aufrufer-Dokument zu verändern

Bindings liefern den Host-Kontext, und SelfIndex wählt this; Options.EnableJavaScript muss True sein

Skript- und roher Binding-Text sind UTF-8-Bytes, die für die JavaScript-Quelle und den quotierten Kontext explizit decodiert werden, statt über die ANSI-Codepage des Betriebssystems interpretiert zu werden; literale griechische Zeichen, supplementäre Skalare und Unicode-Zeilentrenner behalten ihren exakten Wert

Nutzt die mitgelieferte begrenzte QuickJS-Engine oder Options.JavaScriptEvaluator, mit Skript-, Kontext-, Speicher-, Stack-, Interrupt-, Zeit-, Operations- und Ausgabebudgets

Liefert True nur, wenn Engine-Ausführung und Ausgabevalidierung erfolgreich sind; eine fehlgeschlagene Ausführung leert Actions und meldet Diagnostic

TXFAWidgetRuntime validiert und replayed Actions innerhalb seiner eigenen Snapshot-Transaktion; direkte Aufrufer müssen eine äquivalente transaktionale Behandlung bereitstellen

Die native Engine kompiliert wiederverwendbaren Ereignis-Support-Code einmal pro Session-Engine, während jeder Aufruf seinen aktuellen Binding-Vektor, Ereigniskörper, Limits sowie aufgezeichnete Host-, Locale-, Berechnungs- und XML-Antworten liefert; getrennte Sessions und wiederholte Skriptobjekte behalten unabhängigen Zustand

Support-Initialisierung, Ereignisausführung, Unterbrechungs-Wiederholungen und Rollback-Rekonstruktion teilen sich die ursprüngliche Ablaufzeit-Deadline; eigene JavaScriptEvaluator-Callbacks erhalten einen vollständigen eigenständigen Wrapper

Übergib eine eigene TXFAJavaScriptSession, um Skriptobjekte und lexikalischen Zustand über Aufrufe hinweg zu behalten; eine nil-Session erzeugt für diesen Aufruf eine isolierte Engine

Übergib eine eigene TXFAHostTransaction für explizite Anwendungseffekte; Unterbrechungs-Wiederholungen stellen den Session-Checkpoint wieder her und konsumieren aufgezeichnete Antworten, ohne abgeschlossene Anforderungen erneut aufzurufen

Aufrufer auf niedrigerer Ebene müssen die Host-Transaktion mit ihrem Dokumentergebnis abschließen; Host-Effekte erfordern die mitgelieferte Engine und können JavaScriptEvaluator nicht verwenden

LocaleProvider liefert schreibgeschützte Locale-Metadaten; nil nutzt Windows-Locale-Daten, während TXFAWidgetRuntime das aktuelle localeSet des Dokuments mit System-Fallback liefert

Das nächste nichtleere Locale-Binding liefert die umgebende Locale; eine leere geerbte Locale wählt die aktuelle User-Locale

Berechnete Locale-Namen unterbrechen die native Ausführung, stellen den Session-Checkpoint wieder her und versuchen es mit den aufgezeichneten Metadaten erneut; committetes Replay konsumiert diese Metadaten, ohne den Provider erneut aufzurufen

Jeder Aufruf erlaubt höchstens 64 benannte Locale-Anforderungen, 256 UTF-16-Codeeinheiten pro Bezeichner und 2 MiB Locale-Metadaten und teilt sich die Skript-Ablaufzeit-Deadline; eigene JavaScriptEvaluator-Callbacks müssen die gelieferten Locale-Daten konsumieren, ohne native Lookups anzufordern

HostModel liefert einen schreibgeschützten Snapshot aus Anwendungsmetadaten, Seiten, Flags, Titel und Fokus; nil nutzt TXFAHostModelState.Default, und zurückgegebene Host-/Fokus-/Reset-Actions erfordern die native transaktionale Anwendung durch den Aufrufer

Dynamisches FormCalc-Eval unterbricht für native Kompilierung und wiederholt den Versuch mit aufgezeichneten Kompilierungsantworten innerhalb derselben Deadline; eigene JavaScriptEvaluator-Callbacks können diese Anforderungen nicht bedienen

Der Zeiger wird synchron gelesen und nie gehalten oder geschrieben; TXFAWidgetRuntime übergibt seinen aktuellen Zustand und wendet Mutationen innerhalb seiner Dokument-Snapshot-Transaktion an

Die EventActivity des ausführenden Bindings liefert xfa.event.name, mit event als Fallback auf niedrigerer Ebene

Live-SOM-Auflösung nutzt Binding-Hierarchie und aktuelle Vorkommensreihenfolge, unterstützt Klassen- und Nachfahren-Selektoren sowie Kandidaten-Prädikate und wählt ein abgeleitetes oder Default-Vorkommen, wenn ein Index fehlt

Data-DOM-Bindings bauen den datasets-Baum, verbinden Formularwerte über DataIdentity und unterstützen Daten-Schreibzugriffe sowie erhaltene native Daten-Handles; direkte Aufrufer wenden beide Domains und virtuelle Identitäts-Actions transaktional an

Property-DOM-Bindings legen deklarierte Property-Kinder sowie Attributes/DefaultAttributes offen; direkte Aufrufer wenden Property-Raw-Value- und Attribut-Actions auf das passende native Formularvorkommen an

Benannte Feld-Aliase sind über den äußeren Ereignis-Scope sichtbar; lokale const-, let-, class-, function- und var-Deklarationen folgen im Ereigniskörper den normalen lexikalischen JavaScript-Regeln

Der Ereigniskörper bewahrt eine anfängliche use-strict-Direktive, seinen Formularknoten-this-Kontext und explizite Rückgabewerte; lexikalische oder Strict-Mode-Fehler verwerfen dieselbe native Transaktion

Siehe JavaScript Event Scope für Shadowing- und Persistenzverhalten

Verwandte APIs

Interaktive Dynamic-XFA-Widget-Runtime, FormCalc-Funktionen und XFA Packet DOM