我如何从 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
How can i call VBscript from Javascript
提问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/out
in JS and onClick
in VBScript.
是的,您可以这样做,此示例onmouseover/out
在 JS 和onClick
VBScript 中使用。
<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!
我没有测试上面的内容,所以如果有任何错误,请道歉,但你明白了!