10

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

Drew
  • 113
  • 1
  • 1
  • 7
  • 1
    ewww.... people still use VBScript in the browser??? Why would you do such a thing? – Spudley Aug 01 '13 at 13:50
  • @Spudley legacy code? – Yuriy Galanter Aug 01 '13 at 13:50
  • @Drew - please **edit the question** and put the code there, not in a comment. It's unreadable in the comments. – Spudley Aug 01 '13 at 13:51
  • @Drew -- if that's an answer, can you please post it as an answer so you can get credit -- and people can read it! – Ernest Friedman-Hill Aug 01 '13 at 13:51
  • It's not by choice....but it's the only code i can think of that will auto login to the site. Using vbscript alone works fine but i can't figure out how to call out to it with jscript using the OnClick – Drew Aug 01 '13 at 13:52
  • My apologies...i'm new to this site. I'll post the jscript code into the question section – Drew Aug 01 '13 at 13:53
  • @Drew - anything you can do in the browser with VBScript can be done just as well with javascript. It looks like the code you've written is basically a simple ajax function; it's pretty well documented how to do that in JS. – Spudley Aug 01 '13 at 13:54
  • Why not remove the need to login altogether? If you're holding the admin username/password in cleartext in-page, it sort of defeats the point of having a login form. – Richard A. Aug 01 '13 at 14:01
  • I've never used JS in that way. I assume there are articles on how that is done on this site? – Drew Aug 01 '13 at 14:03
  • It's a requirement to login to the webpage "https://cardinal.service-now.com/navpage.do" – Drew Aug 01 '13 at 14:04
  • It's nothing i am able to control or take away as it's housed on an Enterprise – Drew Aug 01 '13 at 14:05

2 Answers2

6

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>
Yuriy Galanter
  • 38,833
  • 15
  • 69
  • 136
2

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!

Yowser
  • 36
  • 1
  • 4