XFA JavaScript Event Scope

Unit: HPDFXFAEventScript, zintegrowany przez HPDFXFARuntime

Named aliases and local declarations

Host zdarzeń rozpoznaje kwalifikujące się nazwane węzły formularza do zewnętrznego scope zdarzenia; zdarzenie może nadal używać input.rawValue, gdy input jest dostępnym nazwanym polem

Body zdarzenia użytkownika ma własny zakres funkcji JavaScript, więc deklaracje const, let i class mogą cieniować alias pola bez kolizji z deklaracjami zmiennych generowanymi przez hosta

const input = xfa.resolveNode("main.input");
input.rawValue = "saved";

Lokalne deklaracje var i function też używają zwykłych reguł zakresu JavaScript; jawne lokalne powiązania cieniują zewnętrzny alias, a powiązanie leksykalne pozostaje niedostępne przed swoją inicjalizacją

Nazwy zarezerwowane przez hosta i niepoprawne identyfikatory pozostają wykluczone z automatycznych aliasów pól; xfa.resolveNode dostarcza jawne odpytanie dla tych nazw

Execution context and strict mode

this body zdarzenia pozostaje wykonującym węzłem formularza, a jawna wartość zwracana nadal płynie do przetwarzania ukończenia calculate albo validate

Początkowa dyrektywa use strict pozostaje teraz dyrektywą body użytkownika; przypisanie niezadeklarowanej zmiennej rzuca wyjątek zamiast tworzyć globalne powiązanie

"use strict";
const local = "value";
xfa.resolveNode("main.input").rawValue = local;

Transactions and lifetime

Błąd składni, temporal-dead-zone ReferenceError albo strict-mode ReferenceError przerywa zdarzenie i przywraca swój natywny snapshot form/datasets, łącznie z zapisami wykonanymi przed błędem runtime

Udane natywne zapisy przetrwają przeładowanie zapisanego XDP; lokalne zmienne zdarzenia należą do tego wywołania, podczas gdy obiekty variables zachowują swoje ustalone trwałe stan leksykalny i zachowanie domknięć

Zagnieżdżony scope nie dodaje wywołań transportu hosta ani nie zmienia limitów skryptu, pamięci, operacji i replay

Related APIs

HPDFXFAExecuteJavaScriptEvent, Interactive XFA Runtime i Native Absent Property Creation