JavaScript中事件取消分两种类型:

一、取消事件的默认行为,比如:取消form表单默认的提交;

   可以使用如下的代码来取消事件的默认行为:

   function cancelHandler(event) {

       var event = event || 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()方法)