May 17, 2000 - Capturing Events at a High Level
May 17, 2000 Capturing Events at a High Level Tips: May 2000
Yehuda Shiran, Ph.D.
|
captureEvents()
method to capture events outside of its intended target (in the window
, layer
, or document
object). For example, the following code segment captures all mouseup
events in the document:
document.captureEvents(Event.MOUSEUP);
document.onmouseup = functionName;
Since Internet Explorer's event model is based on event bubbling, an event is first directed to its intended target (the element that initiated the event). Therefore, the captureEvents()
method is not featured in Internet Explorer. It simply isn't required. As a scripter, you must make sure it is not executed under Internet Explorer. The best way to do this is by object detection, as described in Column 6. The following statements define a cross-browser event capturing routine:
if (window.Event) // Navigator 4.0x
document.captureEvents(Event.MOUSEUP);
document.onmouseup = functionName;
On Internet Explorer 4.0x and older browsers (Navigator and Internet Explorer), only the second statement is executed. Therefore this script is also backward compatible. In other words, it does not generate an error on older browsers. It obviously doesn't work with such browsers, because they do not support the onmouseup
event handler with the document
object. Note that under some circumstances, the onclick
event handler doesn't work properly with the document
object on Navigator 4.0x and up, so we'll use the onmouseup
event handler instead. The following script is a complete example that demonstrates the object detection routine:
<SCRIPT LANGUAGE="JavaScript">
<!--
function processClicks() {
alert("You released the mouse button.");
}
if (window.Event) // Navigator 4.0x and up
document.captureEvents(Event.MOUSEUP);
document.onmouseup = processClicks;
// -->
</SCRIPT>
When the user clicks the mouse button anywhere in the page's background, the script generates an alert dialog box provided that the user is running a fourth-generation browser, or higher. Learn more about event handlers in Column 10, The Internet Explorer Event Model.