JavaScript中事件取消分两种类型:
一、取消事件的默认行为,比如:取消form表单默认的提交;
可以使用如下的代码来取消事件的默认行为:
function cancelHandler(e) {
var event = e || window.event;//IE8之前的event只能通过window.event来获得(针对对象属性注册方式)
//现在取消事件相关的默认行为
if (event.preventDefault) event.preventDefault(); //非标准技术
if (event.returnValue) event.returnValue = false; //IE
return false; //用于处理适用对象属性注册的处理程序
}
二、取消事件传播(包括捕获阶段、目标对象本身事件处理程序调用阶段和冒泡阶段)
(1)在支持addEventListener()的浏览器中(IE9之后),可以调用事件对象的一个stopPropagation()方法以阻止事件的继续传播。注意,此方法调用后,如果在同一对象上绑定了其他事件处理程序(无论是何种事件类型),剩下的事件处理程序将依旧被调用,但是,调用stopPropagation()之后,任何其他对象上的事件处理程序将不会被调用(比如在option的click事件处理函数(IE9以后和其他浏览器支持)中调用stopPropagation()方法,那么select的click事件处理函数将不会被调用,也就是阻止了事件的冒泡)。
(2)在不支持addEventListener()的浏览器中(IE9之前),IE事件对象(window.event)有一个cancelBubble属性,设置这个属性为true能阻止事件进一步传播,但是不支持事件的捕获阶段,只支持事件的冒泡阶段。
(3)某些浏览器支持Event对象的另一个方法stopImmediatePropagation(),类似stopPropagation()方法,这个方法不但阻止了任何其他对象的事件传播,而且阻止了在相同对象上注册的任何其他事件处理程序的调用。(jQuery和YUI等工具库定义了跨平台的stopImmediatePropagation()方法)
本文出自 “希望家园” 博客,请务必保留此出处http://dyq0908.blog.51cto.com/4347597/1379729