Как указать область выполнения скрипта в spidermonkey? - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь реализовать (переводчик VoiceXML) . Для тех, кто не знаком с VoiceXML, приложение позволяет запускать JS-скрипты в одной из нескольких вложенных областей, которые представлены в виде объектов.

Области являются сеансом, приложением, документом и диалогом в порядке от внешних к внутренним областям.

Теперь, если скрипт запускается в области видимости документа, он может обращаться к переменным и функциям из внешних областей без ограничений, а также ко всем переменным и определяемые им функции создаются как подобъекты области видимости документа.

Когда область остается, все ее подобъекты удаляются.

Мне удалось создать глобальный объект и заполнить его стандартными функциями JavaScript

Я хочу добиться следующего.

 <?xml version="1.0" encoding="UTF-8"?> 
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.w3.org/2001/vxml 
   http://www.w3.org/TR/voicexml20/vxml.xsd"> 
  <form> 
    <script> 
      var now = new Date(); <!-- this has a dialog scope-->
    </script>
    <var name="seconds" expr="now.getSeconds()"/> <!-- this has a dialog scope-->
    <block> 
      <var name="now" expr="new Date()"/> <!-- this has an anonymous scope -->
      <script> 
        var current = now.getSeconds();       <!-- "now" in the anonymous scope -->
        var approx = dialog.now.getSeconds(); <!-- "now" in the dialog scope -->
      </script> 
    </block> 
  </form> 
</vxml>
...