cancelBubble
is an IE-only Boolean property (not method) that serves the same purpose as the stopPropagation()
method of other browsers, which is to prevent the event from moving to its next target (known as "bubbling" when the event is travelling from inner to outer elements, which is the only way an event travels in IE < 9). IE 9 now supports stopPropagation()
so cancelBubble
will eventually become obsolete. In the meantime, the following is a cross-browser function to stop an event propagating:
function stopPropagation(evt) {
if (typeof evt.stopPropagation == "function") {
evt.stopPropagation();
} else {
evt.cancelBubble = true;
}
}
In an event handler function, you could use it as follows:
document.getElementById("foo").onclick = function(evt) {
evt = evt || window.event; // For IE
stopPropagation(evt);
};
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…