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实现的网页局布刷新效果
Dec 01 Javascript
js滚动条回到顶部的代码
Dec 06 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
Jan 15 Javascript
js arguments对象应用介绍
Nov 28 Javascript
纯js实现遮罩层效果原理分析
May 27 Javascript
微信小程序  audio音频播放详解及实例
Nov 02 Javascript
解析如何利用iframe标签以及js制作时钟
Dec 08 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
Vue的MVVM实现方法
Aug 16 Javascript
Node.js操作系统OS模块用法分析
Jan 04 Javascript
JavaScript常见事件处理程序实例总结
Jan 05 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
Jun 01 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
为查询结果建立向后/向前按钮
2006/10/09 PHP
php 友好URL的实现(吐血推荐)
2008/10/04 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
koa源码中promise的解读
2018/11/13 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python实现周期性抓取网页内容的方法
2015/11/04 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
python调用外部程序的实操步骤
2019/03/04 Python
python实现弹跳小球
2019/05/13 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
学生学习总结的自我评价
2013/10/22 职场文书
动物科学专业毕业生的自我评价
2013/11/29 职场文书
最受欢迎的自我评价
2013/12/22 职场文书
体育口号大全
2014/06/18 职场文书
银行求职自荐书
2014/06/25 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android