事件取消

取消事件相关的默认操作(三种)

《注册事件处理程序onclick和addEventListener、attachEvent》介绍了用属性注册的时间处理程序的返回值能用于取消事件的浏览器默认操作。在支持addEventListener()的浏览器中,也能通过调用时间对象的preventDefault()方法取消时间的默认操作。不过,在IE9之前的IE中,可以通过设置事件对象的returnValue属性为false来达到同样的效果。下面的代码假设一个事件处理程序,它使用全部的三中取消技术:

function cancelHandler(event){
    var event = event ||  window.event;    //用于IE
    if(event.preventDefault) event.preventDefault();    //标准技术
    if(event.returnValue) event.returnValue = false;    //IE
    return false;      //用于处理使用对象属性注册的处理程序
}

当前的DOM事件模型草案定义了Event对象属性defaultPrevented。

取消事件相关的默认操作只是事件取消中的一种,我们也能取消事件传播

在支持addEventListener()的浏览器中,可以调用事件对象的一个stopPropagation()方法已阻止事件的继续传播。如果在同一对象上定义了其他处理程序,剩下的处理程序将依旧被调用,但调用stopPropagation()方法可以在事件传播期间的任何时间调用,它能工作在捕获阶段、事件目标本身中和冒泡阶段。

IE9之前的IE不支持stopPropagation()方法。相反,IE事件对象有一个cancleBubble属性,设置这个属性为true能阻止事件进一步传播。(IE8及之前版本不支持事件传播的捕获阶段,所以冒泡是唯一待取消的事件传播。)

当前的DOM事件规范草案在Event对象上定义了另一个方法,命名为stopImmediatePropagation()。类似stopPropagation(),这个方法组织了任何其他对象的事件传播,但也阻止了在相同对象上注册的任何其他事件处理程序的调用。

时间: 2024-10-05 04:45:02

事件取消的相关文章

javascript——事件取消

事件取消的第一种方法: document.onclick = null; 事件取消的第二种方法: IE: obj.detachEvent(事件名称,事件函数); 标准 : obj.removeEventListener(事件名称,事件函数,是否捕获); JS代码: window.onload = function(){ function fn1(){ alert(1); } function fn2(){ alert(2); } // document.onclick = fn1; // doc

事件捕获,事件冒泡,事件取消

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <style> div {padding: 50px;} #div1 {background: red;} #div2 {background: b

javascript双击事件取消默认的两次单击事件

当一个元素同时具有单击和双击事件时,双击时会触发2次单击和1此双击事件. 双击会:先第1次单击 ,同时触发第2次和双击事件. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; ch

【COCOS2D-X 备注篇】cocos2dx 获取手机截屏等意外取消触屏事件的处理方法!

最近有童鞋问我如何获取到iphone手机截屏的事件,所以本篇就简单的聊下这种问题的处理办法. 在cocos2dx引擎中,我们能在AppDelegate中获取到,用户将应用切入后台,以及重新返回应用的事件函数.那么对应的,cocos2dx也在引擎中给予我们截取屏幕等这种只能手机应有事件的处理函数. 其实大家应该都很熟悉截取用户触屏的函数,如下: 1 2 3 4 // default implements are used to call script callback if exist virtu

事件绑定和时间取消

//事件绑定 function bindFn(obj,Event,fn){ if(obj.addEventListener)                            //addEventListener  兼容标准浏览器 (IE标准,谷歌,火狐) { obj.addEventListener(Event,fn,false); } else{    obj.attachEvent('on'+Event,function(){        //attachEvent  兼容非标准浏览

MUI事件管理

1.事件绑定 除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on()方法实现批量元素的事件绑定. .on( event , selector , handler ) event:Type: String,需监听的事件名称,例如:'tap' selector:Type: String,选择器 handler:Type: Function( Event event ),事件触发时的回调函数,通过回调中的event参数可以获得事件详情 示例:点击新闻列表

线程安全的事件调用方式

通常事件调用方式为 //版本1 public event NewEventHandler NewEvent;protected virtual void OnNewEvent(EventArgs e){ if (NewEvent != null) NewEvent(this, e);} 但这种方式的问题在于,在做NewEvent != null 检测之后,NewEvent事件调用之前,事件取消了注册,即NewEvent重新变成null,此时再进行调用,将会抛出异常 线程安全的做法, //版本2

HTML5新增的一些属性和功能之六——拖拽事件

拖放事件的前提是分为源对象和目标对象,你鼠标拖着的是源对象,你要放置的位置是目标对象,区分这两个对象是因为HTML5的拖放事件对两者是不同的. 被拖动的源对象可以触发的事件: 1).ondragstart:源对象开始被拖动 2).ondrag:源对象被拖动过程中(鼠标可能移动也可能不移动) 3).ondragend:源对象被拖动结束 拖动源对象可以进入到上方的目标对象可以触发的事件: 1).ondragenter:目标对象被源对象拖动着进入 2).ondragover:目标对象被源对象拖动着悬停

jQuery中怎样阻止后绑定事件

你的代码在页面载入过程中已经完成事件绑定了,没有阻止后绑定的事件的办法了,不过可以删除当前指定节点的事件绑定.方法如下:$("#btn").click(function(){if($("#tx").val()==""){alert("e1");}else{//删除后绑定的事件...$("#btn").unbind('click');}}); 说明:unbind([type],[data])bind()的反向