HPDFXFAExecuteJavaScriptEvent
Birim: HPDFXFAEventScript
Bildirim
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;
Davranış
Canlı bir sanal form DOM'a karşı bir event yürütür ve çağıran belgeyi değiştirmeden doğrulanmış mutation kayıtları döndürür
Bindings, host context'ini sağlar ve SelfIndex this'i seçer; Options.EnableJavaScript True olmalıdır
Script ve ham binding metni UTF-8 bayttır; işletim-sistemi ANSI code page'i kullanılarak yorumlanmak yerine JavaScript kaynağı ve quote edilen context için açıkça decode edilir; literal Yunan character'ları, supplementary scalar'lar ve Unicode satır ayırıcıları kesin value'larını korur
Shipped sınırlı QuickJS engine'ini veya Options.JavaScriptEvaluator'ı kullanır; script, context, bellek, stack, interrupt, süre, operation ve output bütçeleriyle
Yalnızca engine yürütmesi ve output doğrulaması başarılı olduğunda True döndürür; başarısız yürütme Actions'ı temizler ve Diagnostic raporlar
TXFAWidgetRuntime, action'ları kendi snapshot transaction'ı içinde doğrular ve replay eder; doğrudan çağıranlar eşdeğer transactional handling sağlamalıdır
Native engine, reusable event destek kodunu session engine başına bir kez derler; her çağrı ise kendi mevcut binding vector'ünü, event body'sini, limitlerini ve kayıtlı host, locale, calculation ve XML response'larını sağlar; ayrı session'lar ve tekrar script object'leri bağımsız state tutar
Destek başlatması, event yürütmesi, suspension retry'leri ve rollback rekonstrüksiyonu orijinal geçen-süre deadline'ını paylaşır; özel JavaScriptEvaluator callback'leri eksiksiz bağımsız bir wrapper alır
Script object'lerini ve lexical state'i çağrılar arasında tutmak için owned bir TXFAJavaScriptSession geçin; nil bir session o çağrı için izole bir engine oluşturur
Açık uygulama effect'leri için owned bir TXFAHostTransaction geçin; suspension retry'leri session checkpoint'ini geri yükler ve tamamlanmış istekleri yeniden çağırmadan kayıtlı response'ları tüketir
Alt-düzey çağıranlar, host transaction'ını kendi belge sonucuyla sonlandırmalıdır; host effect'leri shipped engine gerektirir ve JavaScriptEvaluator kullanamaz
LocaleProvider, read-only locale metadata sağlar; nil Windows locale data'sını kullanır; TXFAWidgetRuntime ise mevcut belge localeSet'ini sistem fallback'iyle sağlar
En yakın boş-olmayan Locale binding, ambient locale'i sağlar; boş bir kalıtılan locale, mevcut kullanıcı locale'ini seçer
Hesaplanan locale adları native yürütmeyi askıya alır, session checkpoint'ini geri yükler ve kayıtlı metadata ile yeniden dener; commit edilmiş replay o metadata'yı provider'ı yeniden çağırmadan tüketir
Her çağrı, en fazla 64 adlandırılmış locale isteğine, identifier başına 256 UTF-16 code unit'ine ve 2 MiB locale metadata'sına izin verir ve geçen script deadline'ını paylaşır; özel JavaScriptEvaluator callback'leri native aramalar istemeden sağlanan locale data'sını tüketmelidir
HostModel, uygulama metadata'sının, sayfaların, flag'lerin, title'ın ve focus'un read-only bir snapshot'ını sağlar; nil TXFAHostModelState.Default kullanır ve döndürülen host/focus/reset action'ları çağıran tarafından native transactional uygulama gerektirir
Dinamik FormCalc Eval, native compilation için askıya alır ve aynı deadline içinde kayıtlı compiled response'larla yeniden dener; özel JavaScriptEvaluator callback'leri bu isteklere hizmet edemez
Pointer eşzamanlı okunur ve asla tutulmaz veya yazılmaz; TXFAWidgetRuntime kendi mevcut state'ini geçer ve mutation'ları kendi belge snapshot transaction'ı içinde uygular
Yürüten binding'in EventActivity'si xfa.event.name sağlar; event ise alt-düzey fallback'tir
Canlı SOM resolution, binding hiyerarşisini ve mevcut occurrence sırasını kullanır; class ve descendant selector'ları ve aday predicate'leri destekler ve bir indeks atlandığında tek bir çıkarılmış veya default occurrence seçer
Data DOM binding'leri, datasets ağacını kurar, form value'larını DataIdentity üzerinden bağlar ve data yazmaları ile tutulan native data handle'ları destekler; doğrudan çağıranlar her iki domain'i ve sanal identity action'larını transactionally uygular
Property DOM binding'leri, bildirilmiş property child'ları ve Attributes/DefaultAttributes açığa çıkarır; doğrudan çağıranlar property raw-value ve attribute action'larını eşleşen native form occurrence'ına uygular
Adlandırılmış field alias'ları, dış event scope'u üzerinden görünür; yerel const, let, class, function ve var bildirimleri, event body'si içinde normal JavaScript lexical kurallarını izler
Event body'si, başlangıç use strict direktifini, form-node this context'ini ve açık return value'larını korur; lexical veya strict-mode başarısızlıkları aynı native transaction'ı reddeder
Shadowing ve persistence davranışı için bkz. JavaScript Event Scope
İlgili API'ler
Interactive Dynamic XFA Widget Runtime, FormCalc Functions ve XFA Packet DOM