编程语言
首页 > 编程语言> > internet-explorer-如何将javascript变量作为参数传递给vbscript函数(在HTA中)?

internet-explorer-如何将javascript变量作为参数传递给vbscript函数(在HTA中)?

作者:互联网

我正在编写HTA,并且需要将Javascript中的变量传递给VBScript函数.你能让我知道怎么做吗?这是我尝试做的一个(不起作用的)示例:

<!DOCTYPE ... >
<html>
<head>    
    <HTA:APPLICATION ID="chrome" APPLICATIONNAME="kiosk" ... />
    ...
    <script type="text/javascript">
        ...
        var closer =  "C:\Program Files";
        ...
    </script>
    <script language="VBScript" src="close.vbs"></script>
</head>
<body>
<a href="#" onClick="VBScript:CloseExplorerWindow(window.closer)">close</a>
</body>
</html>

请记住,这个示例过于简单了-我只是尝试去除所有复杂性,并向您展示我实际上正在尝试做的事情.

好处:是否可以从JavaScript代码中触发VBScript函数?我的HTA相当广泛地使用jQuery,并且能够在jQuery中完成我需要做的系统工作会很高兴.

解决方法:

如果在VBScript中定义了一个函数,则可以像其他全局可用函数一样从JavaScript执行该函数.两种脚本语言共享全局变量和函数.我曾经使用一个函数,以便可以使用以下代码从我的JavaScript代码访问MsgBox:

<script type="text/vbscript">
Function vbsMsgBox (prompt, buttons, title)
    vbsMsgBox = MsgBox(prompt, buttons, title)
End Function
</script>
<script type="text/javascript">
vbsMsgBox("This is a test", 16, "Test");
</script>

混合这些脚本时,包含顺序很重要.如果页面上的第一个脚本是vbscript,则它将成为事件处理程序的默认脚本引擎.如果第一个是javascript,那将是默认值.提供vbscript:或javascript:是一个常见的误解-在JavaScript中,字符串后跟冒号表示label通常与循环和break / continue语句配对.在VBScript中,这只会导致错误.这种混淆源于从网址运行脚本的方法,例如在< a>的href中元件:

<a href="javascript:doSomething(); void(0);">do something</a>

对于您的示例代码,假设close是全局变量,那么事件处理程序应如下所示:

<a href="#" onclick="CloseExplorerWindow(closer)">close</a>

另外,请参阅有关使用JScript and VBScript on the same page的MSDN文章.

标签:javascript,vbscript,internet-explorer,hta
来源: https://codeday.me/bug/20191011/1892370.html