我如何从 Javascript 调用 VBscript

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17995847/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-27 10:23:24  来源:igfitidea点击:

How can i call VBscript from Javascript

javascriptservicenow

提问by Drew

I have searched the threads here but could not find anything remotely related to what i am trying to do. Basically i want to call vbscript using javascript for the onClick.

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

Is there a way to call aVBScript for the onClick event from a button that uses Javascript onmouseover and onmouseout events?

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

I can't seem to get it to work and need help. Below is a snippet of my javascript code and also vb script i would like to call out to:

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

Javascript code:

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>

What i would like to do is call out to the vbscript for the ServiceNow OnClick event.

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

My VBscript: WScript.Quit Main

我的 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

On Error Resume Next WScript.StdErr.WriteLine "IE closed before script finished." WScript.Quit End Sub

On Error Resume Next WScript.StdErr.WriteLine “IE 在脚本完成前关闭。” WScript.Quit End Sub

Thank you for any help you can provide

感谢您提供任何帮助

采纳答案by Yuriy Galanter

Yes you can do that, this sample uses onmouseover/outin JS and onClickin VBScript.

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

  <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>

回答by Yowser

I know this is old but I was looking for a way to call legacy VBScript from newer pages written with javascript. I used something like:

我知道这很旧,但我一直在寻找一种方法,可以从用 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>

And then in the HTML:

然后在 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 elements can see both javascript and vbscript, so I used one button to trigger a "proxy" button, which in turn calls the VBScript. You could even pass params (sort of) by dropping them into hidden input fields.

DOM 元素可以看到javascript 和vbscript,所以我用一个按钮来触发一个“代理”按钮,它依次调用VBScript。您甚至可以通过将参数放入隐藏的输入字段来传递参数(有点)。

I didn't test the above, so apologies if there are any mistakes, but you get the idea!

我没有测试上面的内容,所以如果有任何错误,请道歉,但你明白了!