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 相关文章推荐
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
Jun 19 Javascript
JavaScript中各种编码解码函数的区别和注意事项
Aug 19 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
Oct 23 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
解决checkbox的attr(checked)一直为undefined问题
Jun 16 Javascript
JS实现很酷的水波文字特效实例
Feb 26 Javascript
如何用JS判断两个数字的大小
Jul 21 Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 Javascript
jQuery实现鼠标跟随效果
Feb 20 Javascript
前端构建工具之gulp的语法教程
Jun 12 Javascript
React组件中的this的具体使用
Feb 28 Javascript
详解浏览器缓存和webpack缓存配置
Jul 06 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
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
php一些公用函数的集合
2008/03/27 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
EasyUI中的tree用法介绍
2011/11/01 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
js实现随机抽奖
2020/03/19 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
Python程序中设置HTTP代理
2016/11/06 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
应届生求职信写作技巧
2013/10/24 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
商务代表岗位职责
2015/02/15 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
Mysql中常用的join连接方式
2022/05/11 MySQL