此函数不直接在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()?
答案 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);