Область видимости событий JavaScript XFA
Модуль: HPDFXFAEventScript, интеграция через HPDFXFARuntime
Именованные алиасы и локальные объявления
Хост событий разрешает подходящие именованные узлы формы во внешнюю область видимости события; событие может продолжать использовать input.rawValue, когда input — доступное именованное поле
Тело пользовательского события имеет собственную функциональную область видимости JavaScript, поэтому объявления const, let и class могут затенять алиас поля, не конфликтуя с объявлениями переменных, сгенерированными хостом
const input = xfa.resolveNode("main.input");
input.rawValue = "saved";
Локальные объявления var и function тоже следуют обычным правилам областей видимости JavaScript; явные локальные привязки затеняют внешний алиас, а лексическая привязка недоступна до своей инициализации
Зарезервированные хостом имена и некорректные идентификаторы по-прежнему исключены из автоматических алиасов полей; xfa.resolveNode даёт явный поиск для таких имён
Контекст выполнения и strict mode
this тела события остаётся исполняемым узлом формы, а явное возвращаемое значение продолжает поступать в обработку завершения calculate или validate
Начальная директива use strict теперь остаётся директивой пользовательского тела; присваивание необъявленной переменной бросает исключение вместо создания глобальной привязки
"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;
Транзакции и время жизни
Синтаксическая ошибка, ReferenceError временной мёртвой зоны или strict-mode ReferenceError прерывают событие и восстанавливают его нативный снимок form/datasets, включая записи, выполненные до runtime-ошибки
Успешные нативные записи переживают перезагрузку сохранённого XDP; локальные переменные события принадлежат этому вызову, а скриптовые объекты variables сохраняют своё устоявшееся персистентное лексическое состояние и поведение замыканий
Вложенная область видимости не добавляет вызовов транспорта хоста и не меняет бюджеты скриптов, памяти, операций и повтора
Связанные API
HPDFXFAExecuteJavaScriptEvent, Интерактивный XFA runtime и Нативное создание отсутствующих свойств