传递一个VBscript函数作为jQuery click()函数的参数

Pass a VBscript function as an argument to the jQuery click() function

本文关键字:函数 jQuery click 参数 VBscript 一个      更新时间:2023-09-26

我正在创作一些HTML文件,这些文件将由嵌入到第三方应用程序中的IE控件呈现。

为了以最少的麻烦提供一些相当复杂的UI元素,我选择使用jQuery在JavaScript中编写大部分代码。这通常工作得很好,但是主机应用程序提供了一个大型的支持函数库,我需要调用它来触发某些操作(例如打印和数据库更新)。这些支持功能都在外部VBScript (.vbs)文件,我可以包括在HTML文件的头。

调用VBscript函数并从我的JavaScript函数中访问全局变量,当直接完成时工作完美无缺,但我不知道如何将对VBscript中定义的函数的引用传递给jQuery事件处理程序。

例如:

 1: <script type="text/vbscript">
 2:   Function handleClick
 3:      MsgBox "Clicked."
 4:   End Function
 5: </script>
 6:
 7: <script type="text/javascript">
 8:   $(function () {
 9:      $("#clickableThing1").click(handleClick);
10:   });
11: </script>

…在第9行生成以下错误:

"对象不支持此属性或方法"

用下面的代码替换第9行就可以了:

$("#clickableThing1").click(function() {
   handleClick();
});

我已经尝试将handleClick传递给click()作为document.handleClickthis.handleClick,但无济于事。

虽然我可以继续在匿名JavaScript函数中包装VBScript调用,但这似乎不必要的冗长,当然这些函数必须在DOM 某处中定义,对吧?

有没有人能告诉我如何直接引用那些VBScript函数?

我不确定你可以。我想如果你尝试,VBScript函数只是要得到评估的地方,它的返回值将被传递到click()

我将提供另一个解决方案,尽管它可能不符合您的要求。您可以使用jQuery attr()函数为DOM元素分配一个内联处理程序。

根据我的经验,当使用VBScript函数作为事件处理程序时,您需要使用父元素来指定它们,并在DOM元素上包含language="vbscript"属性。

<script type="text/javascript">
$(function() {
    // This should work (using parens)...
    $("#clickableThing1").attr("onclick", "handleClick()");
    // or, so should this (no parens on function call)...
    $("#clickableThing1").attr("language", "vbscript").attr("onclick", "handleClick");
});
</script>