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

发布于 2024-09-04 01:53:50 字数 579 浏览 3 评论 0原文

这是我到目前为止得到的:

这个函数并不直接在 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()

heres what i got so far :

This function is not directly in the html page , its in an external js file , 'main.js'.

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

the vbs file contains :

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

thats all i want to do for the time being. how do i call VBGetSwfVer() from main.js ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

魂ガ小子 2024-09-11 01:53:50

这是一个坏主意。
VBScript仅支持IE;您的页面永远无法在 Firefox 上运行。

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

This is a bad idea.
VBScript is only supported by IE; your page will never work on Firefox.

In Internet Explorer, you should be able to simply call the function like any other function.
However, you should port the function to Javascript instead.

静谧幽蓝 2024-09-11 01:53:50

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

All functions will be available in the global scope and so you can call them just as you would a regular javascript method.

An alternative method to include the vbscript is by using 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');
滴情不沾 2024-09-11 01:53:50

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

@slaks , before the vbsript ever gets called i have already determined the user agent. so yes it would never work in firefox , but it should never even be attempted if the end user has anything other than ie.

@sean , thats interesting , im gonna make reference of that.

my solution was :

include this in the header of the index.html

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

then , still in the index.html header , write a small inline javascript support function ,

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

then in my external , main.js file , i call jsCallToVB(i);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文