Область видимости событий 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 и Нативное создание отсутствующих свойств