HPDFXFAExecuteJavaScriptEvent
Модуль: HPDFXFAEventScript
Объявление
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;
Поведение
Выполняет событие над живым виртуальным form DOM и возвращает проверенные записи мутаций, не изменяя документ вызывающего
Bindings поставляют контекст хоста, а SelfIndex выбирает this; Options.EnableJavaScript должен быть True
Скрипт и необработанный текст привязок — байты UTF-8, явно декодируемые для исходника JavaScript и контекста в кавычках, вместо интерпретации через ANSI-кодовую страницу операционной системы; литеральные греческие, дополнительные скаляры и разделители строк Unicode сохраняют точное значение
Используется поставляемый ограниченный движок QuickJS или Options.JavaScriptEvaluator с бюджетами на скрипт, контекст, память, стек, прерывания, время, операции и вывод
Возвращает True только когда выполнение движка и валидация вывода успешны; неудачное выполнение очищает Actions и сообщает Diagnostic
TXFAWidgetRuntime проверяет и воспроизводит действия внутри собственной транзакции снимка; прямые вызывающие должны обеспечить эквивалентную транзакционную обработку
Нативный движок компилирует повторно используемый поддерживающий код событий один раз на движок сессии, а каждый вызов поставляет свой текущий вектор привязок, тело события, лимиты и записанные ответы хоста, locale, вычислений и XML; отдельные сессии и повторные script objects удерживают независимое состояние
Инициализация поддержки, выполнение события, повторные попытки после приостановки и реконструкция rollback делят исходный дедлайн по времени; колбэки собственного JavaScriptEvaluator получают полный автономный wrapper
Передавайте собственный TXFAJavaScriptSession, чтобы удерживать script objects и лексическое состояние между вызовами; nil-сессия создаёт изолированный движок для этого вызова
Передавайте собственный TXFAHostTransaction для явных эффектов приложения; повторные попытки после приостановки восстанавливают контрольную точку сессии и потребляют записанные ответы, не вызывая завершённые запросы снова
Низкоуровневые вызывающие должны завершить хост-транзакцию согласно исходу документа; хост-эффекты требуют поставляемого движка и не могут использовать JavaScriptEvaluator
LocaleProvider поставляет метаданные locale только для чтения; nil использует данные locale Windows, а TXFAWidgetRuntime передаёт текущий localeSet документа с системным fallback
Ближайшая непустая привязка Locale задаёт окружающую locale; пустая унаследованная locale выбирает текущую locale пользователя
Вычисленные имена locale приостанавливают нативное выполнение, восстанавливают контрольную точку сессии и повторяют попытку с записанными метаданными; зафиксированный replay потребляет эти метаданные, не вызывая provider снова
Каждый вызов допускает не более 64 именованных запросов locale, 256 кодовых единиц UTF-16 на идентификатор и 2 МиБ метаданных locale, разделяя дедлайн скрипта по времени; колбэки собственного JavaScriptEvaluator должны потреблять переданные данные locale, не запрашивая нативные поиски
HostModel поставляет снимок только для чтения: метаданные приложения, страницы, флаги, заголовок и focus; nil использует TXFAHostModelState.Default, а возвращённые действия host/focus/reset требуют нативного транзакционного применения вызывающим
Динамический FormCalc Eval приостанавливается для нативной компиляции и повторяет попытку с записанными скомпилированными ответами внутри того же дедлайна; колбэки собственного JavaScriptEvaluator не могут обслужить эти запросы
Указатель читается синхронно и никогда не удерживается и не изменяется; TXFAWidgetRuntime передаёт своё текущее состояние и применяет мутации внутри своей транзакции снимка документа
EventActivity исполняемой привязки подставляет xfa.event.name, а на низком уровне fallback — event
Живое SOM-разрешение использует иерархию привязок и текущий порядок вхождений, поддерживает селекторы классов и потомков и предикаты кандидатов, и выбирает одно выведенное или дефолтное вхождение, когда индекс опущен
Привязки Data DOM строят дерево datasets, соединяют значения формы через DataIdentity и поддерживают записи данных и удерживаемые нативные data-хэндлы; прямые вызывающие применяют оба домена и действия виртуальных идентичностей транзакционно
Привязки Property DOM открывают объявленные дочерние свойства и Attributes/DefaultAttributes; прямые вызывающие применяют действия raw-value свойств и атрибутов к совпадающему нативному вхождению формы
Именованные алиасы полей видны во внешней области события; локальные объявления const, let, class, function и var внутри тела события следуют обычным лексическим правилам JavaScript
Тело события сохраняет начальную директиву use strict, контекст this узла формы и явные возвращаемые значения; лексические ошибки или нарушения strict-mode отклоняют ту же нативную транзакцию
Поведение затенения и сохранения описано в JavaScript Event Scope
Связанные API
Интерактивный runtime виджетов динамического XFA, Функции FormCalc для строк, дат и финансов и XFA Packet DOM