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