Table of Contents:
Microsoft Unsupported Events
 
Workarounds Available:
 
onAbort 
onBlur 
onChange 
onClick 
onDblClick 
onDragDrop 
onError 
onFocus 
onKeyDown 
onKeyPress 
onKeyUp 
onLoad 
onMouseDown 
onMouseMove 
onMouseOut 
onMouseOver 
onMouseUp 
onMove 
onReset 
onResize 
onSelect 
onSubmit 
onUnload

onAbort, onBlur,  onChange, onClick, onDblClick, onDragDrop, onError, onFocus, onKeyDown, onKeyPress, onKeyUp, onLoad, onMouseDown, onMouseMove, onMouseOut, onMouseOver, onMouseUp, onMove, onReset, onResize, onSelect, onSubmit, onUnload

Areas Affected:
Events, Event Handler, Event Model
Microsoft’s Event Model:
event object’s properties: altKey, button, cancelBubble, clientX, clientY, ctrlKey, dataFld, dataTransfer, fromElement, keyCode, offsetX, offsetY, propertyName, reason, recordset, returnValue, screenX, screenY, shiftKey, srcElement, srcFilter, toElement, type, x, y.
Microsoft’s Events: onabort, onafterupate, onbeforecopy, onbeforecut, onbeforepaste, onbeforeunload, onbeforeupdate, onblur, onbounce, oncellchange, onchange, onclick, oncopy, oncut, ondataavailable, ondatasetchanged, ondatasetcomplete, ondblclick, ondrag, ondragend, ondragenter, ondragleave, ondragover, ondragstart, ondrop, onerror, onerrorupdate, onfilterchange, onfinish, onfocus, onhelp, onkeydown, onkeypress, onkeyup, onload, onlosecapture, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onpaste, onpropertychange, onreadystatechange, onreset, onresize, onrowenter, onrowexit, onrowsdelete, onrowsinserted, onscroll, onselect, onselectstart, onstart, onsubmit, onunload.

Netscape’s Event Model:
event object’s properties: data, height, layerX, layerY, modifiers, pageX, pageY, screenX, screenY, target, type, which, width
Netscape’s Events: onAbort, onBlur, onChange, onClick, onDblClick, onDragDrop onError, onFocus, onKeyDown, onKeyPress, onKeyUp, onLoad, onMouseDown, onMouseMove, onMouseOut, onMouseOver, onMouseUp, onMove, onReset, onResize, onSelect, onSubmit, onUnload



Background Information:
Netscape’s JavaScript 1.2 has a very different event model from Internet Explorer’s.  In fact, they are reversed.  For example, clicking on a hypertext link would cause the following event handlers to be called:

Microsoft:
1. Link
2. Layer
3. document
4. window
5. default handler
Netscape:
1. Window
2. document
3. layer
4. link
5. default handler

Microsoft uses an event bubbling model.  Event bubbling is a process in which the object associated with where the event happened receives the event first.  This object then choose to process the event or pass it along to its parent object.
NN4 uses an event capturing model, the opposite of an event bubbling model. Rather than events being generated by the bottommost object in the hierarchy, then bubbled up, events in the event capturing model are generated at the top of the object hierarchy and then fall through to events lower in the hierarchy.  A limited number of page elements can generate and process events. For example, onMouseOver is handled only images and links.



Workaround:

To write scripts that will work in both browsers, don’t use the feature of passing any events to parent event handlers, since the passing order is reversed in the two browsers.  Instead, handle each event in a single function.  Also, use only the events defined for the Netscape browser, since those will work in both.

References
1) Bubble Power: Event Handling in Internet Explorer 4.0 http://www.microsoft.com/workshop/author/script/ie4event.asp
2) Dynamic HTML and The New Event Models http://www.dhtmlzone.com/articles/eventmodels.html
3) Cross Browser Dynamic HTML http://www.dhtmlzone.com/articles/dhtml.html