Question

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.

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

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

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

My 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

Thank you for any help you can provide

Was it helpful?

Solution

Yes you can do that, this sample uses onmouseover/out in JS and onClick in 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>

OTHER TIPS

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:

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

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

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top