HPDFXFAExecuteJavaScriptEvent
Unité : HPDFXFAEventScript
Déclaration
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;
Comportement
Exécute un événement contre un DOM de formulaire virtuel dynamique et retourne des records de mutation validés sans modifier le document de l'appelant
Les bindings fournissent le contexte hôte et SelfIndex sélectionne this ; Options.EnableJavaScript doit être True
Le Script et le texte brut des bindings sont des octets UTF-8, décodés explicitement pour le source JavaScript et le contexte entre guillemets au lieu d'être interprétés avec la page de codes ANSI du système d'exploitation ; les lettres grecques littérales, les scalaires supplémentaires et les séparateurs de ligne Unicode conservent leur valeur exacte
Utilise le moteur QuickJS borné embarqué ou Options.JavaScriptEvaluator, avec des budgets de script, contexte, mémoire, pile, interruption, temps, opérations et sortie
Retourne True uniquement quand l'exécution du moteur et la validation de la sortie réussissent ; une exécution en échec vide Actions et rapporte Diagnostic
TXFAWidgetRuntime valide et rejoue les actions dans sa propre transaction snapshot ; les appelants directs doivent fournir une gestion transactionnelle équivalente
Le moteur natif compile le code de support d'événements réutilisable une fois par moteur de session, tandis que chaque appel fournit son vecteur de bindings courant, son corps d'événement, ses limites et ses réponses enregistrées d'hôte, de locale, de calcul et XML ; les sessions séparées et les script objects répétés conservent un état indépendant
L'initialisation du support, l'exécution d'événements, les retries de suspension et la reconstruction de rollback partagent l'échéance de temps écoulé d'origine ; les callbacks JavaScriptEvaluator personnalisés reçoivent un wrapper autonome complet
Passez un TXFAJavaScriptSession dont vous êtes propriétaire pour conserver les script objects et l'état lexical entre les appels ; une session nil crée un moteur isolé pour cet appel
Passez un TXFAHostTransaction dont vous êtes propriétaire pour des effets applicatifs explicites ; les retries de suspension restaurent le checkpoint de session et consomment les réponses enregistrées sans invoquer de nouveau les requêtes déjà complétées
Les appelants de bas niveau doivent finaliser la transaction hôte avec le résultat de leur document ; les effets hôtes exigent le moteur embarqué et ne peuvent pas utiliser JavaScriptEvaluator
LocaleProvider fournit des métadonnées de locale en lecture seule ; nil utilise les données de locale Windows, tandis que TXFAWidgetRuntime fournit le localeSet du document courant avec fallback système
Le binding Locale non vide le plus proche fournit la locale ambiante ; une locale héritée vide sélectionne la locale utilisateur courante
Les noms de locale calculés suspendent l'exécution native, restaurent le checkpoint de session et réessayent avec les métadonnées enregistrées ; le replay validé consomme ces métadonnées sans invoquer de nouveau le provider
Chaque appel admet au plus 64 requêtes de locale nommées, 256 unités de code UTF-16 par identifiant et 2 Mio de métadonnées de locale, en partageant l'échéance du script écoulé ; les callbacks JavaScriptEvaluator personnalisés doivent consommer les données de locale fournies sans demander de lookups natifs
HostModel fournit un snapshot en lecture seule des métadonnées d'application, pages, flags, titre et focus ; nil utilise TXFAHostModelState.Default, et les actions host/focus/reset retournées exigent une application native transactionnelle par l'appelant
L'Eval FormCalc dynamique se suspend pour la compilation native et réessaie avec les réponses de compilation enregistrées dans la même échéance ; les callbacks JavaScriptEvaluator personnalisés ne peuvent pas servir ces requêtes
Le pointeur est lu de manière synchrone et jamais conservé ni écrit ; TXFAWidgetRuntime passe son état courant et applique les mutations dans sa transaction snapshot de document
L'EventActivity du binding en cours d'exécution fournit xfa.event.name, avec event comme fallback de bas niveau
La résolution SOM dynamique utilise la hiérarchie de bindings et l'ordre des occurrences courant, prend en charge les sélecteurs de classe et descendants et les prédicats de candidats, et sélectionne une occurrence inférée ou par défaut quand un index est omis
Les bindings du Data DOM construisent l'arbre datasets, connectent les valeurs de formulaire via DataIdentity et prennent en charge les écritures de données et les data handles natifs conservés ; les appelants directs appliquent transactionnellement les deux domaines et les actions d'identité virtuelle
Les bindings du Property DOM exposent les enfants de propriétés déclarées et Attributes/DefaultAttributes ; les appelants directs appliquent les actions de raw-value et d'attributs de propriétés à l'occurrence de formulaire native correspondante
Les alias de champs nommés sont visibles à travers le scope d'événement externe ; les déclarations locales const, let, class, function et var suivent les règles lexicales JavaScript normales dans le corps de l'événement
Le corps d'événement préserve une directive use strict initiale, son contexte this de nœud de formulaire et les valeurs de retour explicites ; les échecs lexicaux ou de mode strict rejettent la même transaction native
Voir Scope des événements JavaScript pour le comportement de shadowing et de persistance
APIs associées
Runtime XFA dynamique interactif, Fonctions FormCalc et Packet DOM XFA