Мне нужно вызвать функцию vbscript из внешнего файла javascript file :: function - PullRequest
1 голос
/ 28 мая 2010

вот что я получил до сих пор:

Эта функция не находится непосредственно на html-странице, она находится во внешнем js-файле, main.js.

function createVBScript(){
 var script=document.createElement('script');
 script.type='text/vbscript';
 script.src='vb/fldt.vbs';
 document.getElementsByTagName('head')[0].appendChild(script);
}

Файл VBS содержит:

<!-- // Visual basic helper required to detect Flash Player ActiveX control version information
 Function VBGetSwfVer()
    MsgBox "Hello there"    
 End Function
// -->

это все, что я хочу сейчас сделать. как мне вызвать VBGetSwfVer () из main.js ?

Ответы [ 3 ]

1 голос
/ 28 мая 2010

Все функции будут доступны в глобальной области видимости, поэтому вы можете вызывать их так же, как и обычный метод JavaScript.

Альтернативный метод включения vbscript - использование execScript

window.execScript('Class NixProxy\n' +
'    Private m_parent, m_child, m_Auth\n' +
'\n' +
'    Public Sub SetParent(obj, auth)\n' +
'        If isEmpty(m_Auth) Then m_Auth = auth\n' +
'        SET m_parent = obj\n' +
'    End Sub\n' +
'    Public Sub SetChild(obj)\n' +
'        SET m_child = obj\n' +
'        m_parent.ready()\n' +
'    End Sub\n' +
'\n' +
'    Public Sub SendToParent(data, auth)\n' +
'        If m_Auth = auth Then m_parent.send(CStr(data))\n' +
'    End Sub\n' +
'    Public Sub SendToChild(data, auth)\n' +
'        If m_Auth = auth Then m_child.send(CStr(data))\n' +
'    End Sub\n' +
'End Class\n' +
'Function GetNixProxy()\n' +
'    Set GetNixProxy = New NixProxy\n' +
'End Function\n', 'vbscript');
1 голос
/ 30 мая 2010

@ slaks, еще до вызова vbscript я уже определил пользовательский агент. так что да, он никогда не будет работать в Firefox, но его даже не следует пытаться делать, если у конечного пользователя есть что-то кроме ie.

@ Шон, это интересно, я собираюсь сделать ссылку на это.

мое решение было:

включить это в заголовок index.html

<script type="text/javascript" src="js/main.js"></script>
<script type="text/vbscript" src="vb/fldt.vbs"></script>

затем, все еще в заголовке index.html, напишите небольшую встроенную функцию поддержки JavaScript,

<!--[if !IE]>-->
<script languge="javascript">
     function jsCallToVB(i) {
          var val = VBGetSwfVer(i);
   return val;
     }
</script>
<!--<![endif]-->

тогда в моем внешнем файле main.js я звоню jsCallToVB(i);

1 голос
/ 28 мая 2010

Это плохая идея.
VBScript поддерживается только IE; Ваша страница никогда не будет работать в Firefox.

В Internet Explorer вы можете просто вызывать функцию, как и любую другую функцию.
Однако вместо этого вам следует перенести функцию на Javascript.

...