2

我正在编写 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 中完成我需要做的系统工作,那就太好了。

4

2 回答 2

4

如果一个函数是在 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:orjavascript:是一个常见的误解 - 在 JavaScript 中,后跟冒号的字符串表示通常与循环和中断/继续语句配对的标签。在 VBScript 中,它只会导致错误。这种混淆源于从 URL 运行脚本的方法,例如在<a>元素的 href 中:

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

使用您的示例代码,假设closer是一个全局变量,那么您的事件处理程序应如下所示:

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

另外,请查看有关在同一页面上使用 JScript 和 VBScript 的 MSDN 文章。

于 2010-07-27T10:33:23.953 回答
1

您的示例应该有效,确定它没有按照您的预期做,因为var closer = "C:\Program Files"; 应该是var closer = "C:\\Program Files";

于 2010-07-27T10:37:19.060 回答