【问题标题】:Calling VBScript from Javascript从 Javascript 调用 VBScript
【发布时间】:2009-06-24 16:06:50
【问题描述】:

我已经看过相关的帖子,但它只涉及使用内联 VBScript 处理 onmouseover 事件,同时为 onClick 调用 Javascript 函数。

有没有办法从使用 Javascript onmouseover 和 onmouseout 事件的按钮调用 VBScript Sub 的 onClick 事件?

目前,当我尝试时,我收到一个错误,指出该对象不支持该属性或方法。

【问题讨论】:

    标签: javascript vbscript


    【解决方案1】:

    这是可能的,但您需要在 HTML 中使用适当的语言为所有脚本调用添加前缀。

    onmouseover="javascript: vbfunction();"
    

    如果有没有前缀的脚本调用,您可能会在页面上收到错误,因为解析器不知道正在使用哪种脚本语言。

    【讨论】:

    • Internet Explorer 默认使用它解析的第一个脚本元素的语言。因此,如果第一个脚本元素是 javascript,则无需在事件处理程序中指定“javascript:”。
    • 试过 onclick="javascript: btnGet_Click();" (btnGet_Click 是 vb sub 的名称),我仍然得到对象不支持此属性或方法的错误。
    • 您需要将它添加到所有处理程序中。正如前面的评论者所说,IE 默认使用第一种语言,所以如果你为所有处理程序指定它,就没有歧义。
    • Javascript 是我在页面中的第一个脚本元素,因此根据该评论,我应该能够从处理程序中删除 javascript: 标签,因为它应该默认为第一个脚本元素的语言( javascript,在我的情况下)。当我从处理程序中删除 javascript: 标记时,它仍然返回“对象不支持属性或方法”错误。谷歌无法解决我的愚蠢问题。 :(
    • 发现问题。我的按钮 ID 与我尝试调用的 sub 相同。
    【解决方案2】:

    把你的代码放在Head Tags:<head> </head>

    在这些括号之间添加您的VBScript

    <script type="text/vbscript">
    </script>
    
    Function myVBFunction()
        ' here comes your vbscript code
    End Function
    
    // From a hardcoded link, don't write a semicolon a the end:
    <a href="#" onclick="VBscript:myVBFunction('parameter')">link</a> 
    

    您可以阅读更多关于它的信息here

    【讨论】:

      【解决方案3】:

      确保您调用的 sub 的名称与脚本中任何其他对象的 ID 不匹配。

      【讨论】: