1

Тема: HTA: синхронизация VBScript и JavaScript

Можно совместно использовать VBScript и JavaScript в одном HTA(HTML) документе.


Вызов функции JavaScript из области VBScript осуществляется достаточно просто:

<META HTTP-EQUIV=Content-Type content='text/html;charset=windows-1251'>
<HTML>
<BODY SCROLL="NO">

<SCRIPT Language="JavaScript">
    function sample()
    {alert('hello Dword!')}
</SCRIPT>

<SCRIPT Language="VBScript">
    'Вызов функции JavaScript из области VBS
    sample()
    window.close()
</SCRIPT>
</BODY>
</HTML>

Вызов функции VBScript из области JavaScript осуществляется несколько сложнее, путем передачи VBScript-функции как параметра.

<META HTTP-EQUIV=Content-Type content='text/html;charset=windows-1251'>
<HTML>
<BODY SCROLL="NO">

<SCRIPT Language="JavaScript">
//Вспомогательная функция JavaScript
    function callDWorld(param)
        {return param}
</SCRIPT>

<SCRIPT Language="VBScript">
'Основная функция VBScript
    Function Sample()
        MsgBox "Hello DWORD!",vbExclamation+vbSystemModal,"Sample"
        Sample=0
    End Function
</SCRIPT>

<SCRIPT Language="JavaScript">
//Вызов вспомогательной функции
//с передачей основной функции
//как параметра
    callDWorld(Sample())
    window.close()
</SCRIPT>
</BODY>
</HTML>

Пользуясь методом window.close() и тем, что скрипт общей области HTA(HTML) документа выполняется до отображения окна, можно пробовать создавать неоконные HTA проекты, с одновременным использованием VB и JavaScript(некий аналог .WSF). Например в JavaScript отсутствует функция Hex, зато такая функция есть в VBScript. Пользуясь вышеприведенными соображениями, можно получить Hex представление числа из области JavaScript:

<META HTTP-EQUIV=Content-Type content='text/html;charset=windows-1251'>
<HTML>
<BODY SCROLL="NO">

<SCRIPT Language="JavaScript">
//Вспомогательная функция JavaScript
    function callDWorld(param)
        {return param}
</SCRIPT>

<SCRIPT Language="VBScript">
'Основная функция VBScript(получение HEX представления числа)
    Function Sample(data)
        MsgBox "0x" & Hex(data),vbExclamation+vbSystemModal,"Hex Sample"
        Sample=0
    End Function
</SCRIPT>

<SCRIPT Language="JavaScript">
//Вызов вспомогательной функции
//с передачей основной функции
//как параметра
    var x=775676
    callDWorld(Sample(x))
    window.close()
</SCRIPT>
</BODY>
</HTML>