2010-05-28 78 views
1

继承人什么我走到这一步:我需要内外部调用从一个VBScript函数的JavaScript文件::功能

此功能是不能直接在HTML页面,它在外部JS文件,“主。 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()?

回答

1

这是一个坏主意。
VBScript只支持IE;您的页面将会在之前从未在Firefox上运行。

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

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'); 
1

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

@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);

相关问题