我需要从外部javascript文件:: function中调用vbscript函数

时间:2010-05-28 13:16:28

标签: javascript function vbscript external

到目前为止我得到了什么:

此函数不直接在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
// -->

这就是我暂时想做的事情。 如何从main.js 调用VBGetSwfVer()?

3 个答案:

答案 0 :(得分:1)

这是一个坏主意 VBScript仅受IE支持;您的网页永远不会在Firefox上运行。

在Internet Explorer中,您应该能够像任何其他功能一样简单地调用该函数 但是,您应该将该函数移植到Javascript。

答案 1 :(得分:1)

所有功能都可以在全局范围内使用,因此您可以像使用常规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');

答案 2 :(得分:1)

@slaks,在调用vbsript之前我已经确定了用户代理。所以是的,它永远不会在Firefox中工作,但如果最终用户有除了ie以外的任何东西,它甚至不应该被尝试。

@sean,这很有意思,我要参考一下。

我的解决方案是:

将其包含在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);