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