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