Preventing Bubble and Capture : Browser Event « Window Browser « JavaScript DHTML






Preventing Bubble and Capture

/*
JavaScript Bible, Fourth Edition
by Danny Goodman 

John Wiley & Sons CopyRight 2001
*/

<HTML>
<HEAD>
<TITLE>W3C DOM Event Propagation</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function init() {
    // using old syntax to assign bubble-type event handlers
    window.onclick = winEvent
    document.onclick = docEvent
    document.body.onclick = docBodEvent
    // turn on click event capture for two objects
    document.addEventListener("click", docEvent, true)
    document.forms[0].addEventListener("click", formCaptureEvent, true)
    // set event listener for bubble

document.forms[0].addEventListener("click", formBubbleEvent, false)
}
function winEvent(evt) {
    if (evt.target.type == "button") {
        alert("Event is now at the window object level (" + getPhase(evt) + ").")
    }
}
function docEvent(evt) {
    if (evt.target.type == "button") {
        alert("Event is now at the **document** object level (" + 
getPhase(evt) + ").")
    }
}
function docBodEvent(evt) {
    if (evt.target.type == "button") {
        alert("Event is now at the BODY level (" + 
getPhase(evt) + ").")
    }
}
function formCaptureEvent(evt) {
    if (evt.target.type == "button") {
        alert("This alert triggered by FORM only on CAPTURE.")
        if (document.forms[0].stopAllProp.checked) {
            evt.stopPropagation()
        }
    }
}
function formBubbleEvent(evt) {
    if (evt.target.type == "button") {
        alert("This alert triggered by FORM only on BUBBLE.")
        if (document.forms[0].stopDuringBubble.checked) {
            evt.preventBubble()
            }
    }
}
// reveal event phase of current event object
function getPhase(evt) {
    switch (evt.eventPhase) {
        case 1:
            return "CAPTURING"
            break
        case 2:
            return "AT TARGET"
            break
        case 3:
            return "BUBBLING"
            break
        default:
            return ""    
    }
}
</SCRIPT>
</HEAD>
<BODY onLoad="init()">
<H1>W3C DOM Event Propagation</H1>
<HR>
<FORM>
<INPUT TYPE="checkbox" NAME="stopAllProp">Stop all propagation at FORM<BR>
<INPUT TYPE="checkbox" NAME="stopDuringBubble">Prevent bubbling past FORM
<HR>
<INPUT TYPE="button" VALUE="Button 'main1'" NAME="main1"  onClick=
    "alert('Event is now at the button object level (' + getPhase(event) + ').')">
</FORM>
</BODY>
</HTML>




           
       








Related examples in the same category

1.Using the History Object to Navigate
2.Handling onBlur and onFocus in Frames
3. IE4+ Event Coordinate Properties
4.Using the srcElement property
5. NN4 Event Capture and Release 1
6.Document and Layer Event Capture and Release
7.NN4 Capture, Release, and Route Events
8.NN4 Redirecting Events
9. Event Bubbling Demonstration
10.Cancelling and Redirecting Events in IE5.5+
11.NN6 Event Capture and Bubble
12.Cancelling and Redirecting Events in NN6+