【问题标题】:How can i call VBscript from Javascript我如何从 Javascript 调用 VBscript
【发布时间】:2013-08-02 11:33:48
【问题描述】:

我已经搜索了这里的主题,但找不到与我正在尝试做的事情相关的任何事情。基本上我想为 onClick 使用 javascript 调用 vbscript。

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

我似乎无法让它工作,需要帮​​助。下面是我的 javascript 代码的 sn-p 以及我想调用的 vb 脚本:

Javascript 代码:

<td align="center">
    <input onMouseOver="window.status=me.value" onMouseOut="window.status=''" onMouseOver="window.status=me.value" onMouseOut="window.status=''" type="button" value="Impersonation" class="redBtn" onClick="openPopup('http://internal.mps.cardinal.net/cardcom/index.asp')" />
   </td>
   <td align="center">
    <input onMouseOver="window.status=me.value" onMouseOut="window.status=''" onMouseOver="window.status=me.value" onMouseOut="window.status=''" type="button" value="ServiceNow" class="normalBtn" onClick="openPopup('https://cardinal.service-now.com/navpage.do')" />
   </td>

我想做的是为 ServiceNow OnClick 事件调用 vbscript。

我的 VBscript: WScript.Quit Main

Function Main
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Visible = True
IE.Navigate "https://cardinal.service-now.com/navpage.do"
Wait IE

With IE.Document
On Error Resume Next
  .GetElementsByName("EnterpriseID")(0).value = "admin"
  .GetElementsByName("PASSWORD")(0).value = "admin"
End With

IE.Document.getElementByID("SignInBtn").Click

End Function

Sub Wait(IE)
Do
WScript.Sleep 500
Loop While IE.ReadyState < 4 And IE.Busy 
Do
WScript.Sleep 500
Loop While IE.ReadyState < 4 And IE.Busy 
End Sub

Sub IE_OnQuit

出现错误继续下一步 WScript.StdErr.WriteLine "IE 在脚本完成前关闭。" WScript.退出 结束子

感谢您提供的任何帮助

【问题讨论】:

  • internal.mps.cardinal.net/cardcom/index.asp')" /> cardinal.service-now.com/navpage.do')" />
  • ewww....人们还在浏览器中使用VBScript???你为什么要这么做?
  • @Spudley 遗留代码?
  • @Drew - 请编辑问题并将代码放在那里,而不是在评论中。它在 cmets 中是不可读的。
  • @Drew -- 如果这是一个答案,您能否将其作为答案发布,以便您获得荣誉 -- 人们可以阅读它!

标签: javascript servicenow


【解决方案1】:

是的,您可以这样做,此示例在 JS 中使用 onmouseover/out,在 VBScript 中使用 onClick

  <script type="text/vbscript">
      Function MyVbAlert()
        MsgBox("Hello from VB Script!")
      End Function
  </script>

   <script type="text/javascript">

       function myJsMouseOver(c) {
            c.style.color = 'green'    
       }

       function myJsMouseOut(c) {
           c.style.color = 'black'
       }

   </script>


    <span onclick="MyVbAlert()" onmouseover="myJsMouseOver(this)" onmouseout="myJsMouseOut(this)" >Click Me</span>

【讨论】:

  • 没问题 :) 很高兴为您提供帮助。
  • 这不是从 JavaScript 调用 VBScript,而是从 DOM 事件监听器调用 VBScript。
【解决方案2】:

我知道这是旧的,但我正在寻找一种方法来从用 javascript 编写的新页面调用旧版 VBScript。我用过类似的东西:

<script language="javascript" type="text/javascript">
function clickProxy() {
    document.getElementById("vbProxy").click(); // initiate click event on the button
}
</script>

<script language="vbscript" type="text/vbscript">
function runVB()
    msgbox "VBScript!"
end function
</script>

然后在 HTML 中:

<input type="button" id="vbProxy" onclick="vbscript: runVB" value="VB Proxy" style="height:0px;width:0px"/>
<input type="button" onclick="clickProxy()" value="Click Me" style="height:0px;width:0px"/>

DOM 元素可以同时看到 javascript 和 vbscript,所以我用一个按钮触发了一个“代理”按钮,该按钮又调用了 VBScript。您甚至可以通过将参数放入隐藏的输入字段来传递参数(某种程度)。

以上内容我没有测试,如有错误请见谅,但你懂的!

【讨论】: