javascript 事件处理程序介绍


Posted in Javascript onJune 27, 2012

1、DOM0级事件处理程序
将一个函数值给一个事件处理程序属性。
例如:

var btn = document.getElementById("myBtn"); 
btn.onclick = funtion(){ 
alert(this.id); //"myBtn" 
}

删除事件,btn.onclick = null;
--------------------------------------------------------------------------------
2、DOM2级事件处理程序
先介绍,“DOM2级事件”定义的两个方法,用于处理指定和删除事件处理程序的操作:
addEventListener()
removeEventListener()
所有DOM节点都包含这两个方法,接受3个参数:处理事件名、作为事件处理程序的函数、一个布尔值。
最后的布尔值参数,true:表示在捕获阶段调用事件处理程序;false:表示在冒泡阶段调用事件处理程序。\
var btn = document.getElementById("myBtn"); 
btn.addEventListener("click",funciton(){ 
alert(this.id); 
},false);

用DOM2级方法添加事件处理程序主要的好处是可以添加多个事件处理程序。
例如:
var btn = document.getElementById("myBtn"); 
btn.addEventListener("click",funciton(){ 
alert(this.id); 
},false); 
btn.addEventListener("click",funciton(){ 
alert(“Hello World!”); 
},false);

这两个事件会按照顺序触发。
通过 addEventListener()添加的事件只能用removeEventListener()移除。移除时传入的参数需与添加时的参数一致,也就是说匿名函数将无法移除。
var btn = document.getElementById("myBtn"); 
var handler = function(){ 
alert(this.id); 
}; 
btn.addEventListener("click" , handler , false); 
btn.removeEventListener("click", handler , false);

大多数情况下,都是将事件处理程序添加到事件流的冒泡阶段,以便兼容各种浏览器。
firefox、safari、chrome、opera支持DOM2级事件处理程序。
--------------------------------------------------------------------------------
3、IE事件处理程序
IE实现了与DOM中类似的两个方法:
attachEvent()
detachEvent()
这两个方法都接受两个参数:事件处理程序名称和事件处理程序函数。
由于IE只支持时间冒泡,所以通过attachEvent() 添加的事件处理程序都会被添加到冒泡阶段。
例如:
var btn = document.getElementById("myBtn"); 
btn.attachEvent("onclick" , function(){ 
alert("Clicked"); 
})

注意,attachEvent()的第一个参数是“onclick”,而非 “click”。
IE的attachEvent()与DOM0的addEventListener()的主要区别是事件处理程序的作用域。
DOM0级方法,事件处理程序会在所属元素的作用域内运行;
attachEvent()方法,事件处理程序会在全局作用域中运行,因此 this等于 window。
attachEvent()也可以为一个元素添加多个事件处理程序。
var btn = document.getElementById("myBtn"); 
btn.attachEvent(”onclick“ , function(){ 
alert("clicked"); 
}) 
btn.attachEvent(”onclick“ , function(){ 
alert("Hello World!"); 
})

与DOM方法不同的是,这些事件处理程序不是以添加顺序执行,而是以相反的方向执行。
detachEvent() 的用法与removeEventListener()的用法一样。
--------------------------------------------------------------------------------
4、跨浏览器的事件处理程序
var EventUtil = { 
addHandler : function(element, type , handler){ 
if (element.addEventListener){ 
element.addEventListener(type, handler, false); 
} else if ( element.attachEvent){ 
element.attachEvent("on" + type , handler) 
} else { 
element["on" + type] = handler; 
} 
}, 
removeHandler: function( element , type , handler){ 
if ( element.removeElementListener) { 
element.removeElementListener( type , handler , flase); 
} else if ( element.detachEvent) { 
element.detachEvent ( "on" + type , handler) 
} else { 
element["on" + type] = handler; 
} 
} 
}
Javascript 相关文章推荐
window.open()弹出居中的窗口
Feb 01 Javascript
js继承 Base类的源码解析
Dec 30 Javascript
flexigrid 类似ext grid的JS表格代码
Jul 17 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
Aug 12 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
Aug 26 Javascript
JS代码实现table数据分页效果
May 26 Javascript
AngularJS过滤器filter用法总结
Dec 13 Javascript
jQuery验证表单格式的使用方法
Jan 10 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
一个Vue页面的内存泄露分析详解
Jun 25 Javascript
对vue事件的延迟执行实例讲解
Aug 28 Javascript
Vue的编码技巧与规范使用详解
Aug 28 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
Jun 27 #Javascript
IE事件对象(The Internet Explorer Event Object)
Jun 27 #Javascript
跨浏览器的事件对象介绍
Jun 27 #Javascript
UI Events 用户界面事件
Jun 27 #Javascript
浅谈Javascript鼠标和滚轮事件
Jun 27 #Javascript
浅谈Javascript事件模拟
Jun 27 #Javascript
JS时间选择器 兼容IE6,7,8,9
Jun 26 #Javascript
You might like
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
linux下编译安装memcached服务
2014/08/03 PHP
33道php常见面试题及答案
2015/07/06 PHP
php析构函数的简单使用说明
2015/08/24 PHP
php输出图像的方法实例分析
2017/02/16 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
JQuery中Text方法用法实例分析
2015/05/18 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
vue实现信息管理系统
2020/05/30 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
应届中专生自荐书范文
2014/02/13 职场文书
投资合作协议书范本
2014/04/17 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL