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