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 相关文章推荐
js实现图片漂浮效果的方法
Mar 02 Javascript
详解JavaScript的while循环的使用
Jun 03 Javascript
JavaScript学习笔记之数组的增、删、改、查
Mar 23 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
node 利用进程通信实现Cluster共享内存
Oct 27 Javascript
Vue.js划分组件的方法
Oct 29 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
Nov 02 Javascript
JS中使用textPath实现线条上的文字
Dec 25 Javascript
快速解决处理后台返回json数据格式的问题
Aug 07 Javascript
angularJs中ng-model-options设置数据同步的方法
Sep 30 Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 Javascript
Vue切换Tab动态渲染组件的操作
Sep 21 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
PHP 超链接 抓取实现代码
2009/06/29 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
php自定义分页类完整实例
2015/12/25 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
vue ssr 指南详读
2018/06/29 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
在Django框架中设置语言偏好的教程
2015/07/27 Python
Python中的 enum 模块源码详析
2019/01/09 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
新东网科技Java笔试题
2012/07/13 面试题
JAVA程序员面试题
2012/10/03 面试题
校园活动策划方案
2014/06/13 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
实习生工作证明范本
2014/09/14 职场文书
兵马俑的导游词
2015/02/02 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技