Question: I saw this code and I'm scratching my head trying to decide how it works.

```
<SCRIPT LANGUAGE=javascript> 

     function SpeechMikeControl::SPMEventButton(lDeviceID, EventId) {
        alert("lDeviceID=" + lDeviceID + ", EventId=" + EventId);
     }

</SCRIPT>

```

double colon? This is from using a philips speech mike from a web page.

Any idea what this double colon means? It seems like a syntax error to me but it works! (at least in IE).

Answer: 
This is an extension to the Javascript language implemented by Microsoft. It's purpose is to specify an event handler for a COM object referenced on the page. `SpeechMikeControl` is the globally-scoped name of the COM (and/or ActiveX) object:

* either with an `OBJECT` or some other element, which has an `id` property of `SpeechMikeControl`, or
* a global variable `SpeechMikeControl` declared somewhere previously in the Javascript

`SPMEventButton` is the name of the COM event which will be raised by the `SpeechMikeControl` object under who-knows-what circumstances. 

The double colon is an instruction to connect the function body as a handler to the control's event.
I'm pretty certain that's not valid Javascript syntax.

If it works in IE but not other browsers, it could possibly be that IE is treating it as another scripting language (maybe VBScript? although I don't recall that having a double colon operator either? Not sure what other language it could be though.)