详解JavaScript中的大事流和大事处理程序__第1页
详解JavaScript中的大事流和大事处理程序__第2页
详解JavaScript中的大事流和大事处理程序__第3页
详解JavaScript中的大事流和大事处理程序__第4页
详解JavaScript中的大事流和大事处理程序__第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、详解JavaScript中的大事流和大事处理程序_ 大事流:分两种,IE的是 大事冒泡流 ,大事开头时从最具体的元素接收,逐级向上传播到较为不具体的节点(Element - Document)。与之相反的是 Netscape 的 大事捕获流 。 DOM2级大事规定大事流包括三个阶段:大事捕获阶段、处于目标阶段和大事冒泡阶段。 大多数状况下都是将大事处理程序添加到大事流的冒泡阶段。一个 EventUtil 的栗子: var EventUtil = addHandler: function(element, type, handler) if(element.addEventListener) e

2、lement.addEventListener(type, handler, false); else if(element.attachEvent) element.attachEvent(on + type, handler); / IE8 else elementon + type = handler; , removeHandler: function(). 下面我们具体来看: DOM0级大事处理程序 通过Javascript指定大事处理程序的传统方式,就是将一个函数赋值给一个大事处理程序属性。 每个元素都有自己的大事处理程序属性,这些属性通常全部小写,例如onclick。将这种属性的

3、值设置为一个函数,就可以指定大事处理程序。 var btn = document.getElementById(myBtn); / 添加大事处理程序 btn.onclick = function () alert( this );/为DOM元素btn ; / 移除大事处理程序 btn.onclick = null; 优点:1.简洁2.具有跨扫瞄器的优势 缺点:在代码运行之前不会指定大事处理程序,因此这些代码在页面中位于按钮后面,就有可能在一段时间怎么点击都没反应,用户体验变差。 DOM2级大事处理程序 定义了两个方法,用于处理指定和删除大事处理程序的操作:addEventListener()和

4、removeEventListener()。三个参数,1.要处理的大事名。2.作为大事处理程序的函数3.一个布尔值。最终这个布尔值为true,表示在捕获阶段调用大事处理程序,false表示在冒泡阶段调用大事处理程序。 / 添加多个大事处理程序 var btn = document.getElementById(myBtn); btn.addEventListener(click,function () alert( this );/ 为DOM元素btn ,false ); btn.addEventListener(click,function () alert(Hello World); ,f

5、alse); / 移除大事处理程序 btn.removeEventListener(click,function () / 匿名函数无法被移除,移除失败 ,false); / 改写 var handler = function () alert(this.id); ; btn.addEventListener(click,handler,false); / 再次移除大事处理程序 btn.removeEventListener(click,handler,false);/ 移除胜利 这两个大事处理程序会根据添加他们的挨次触发。大多数状况,都是将大事处理程序添加到大事流的冒泡阶段,这样可以最大限度

6、的兼容各种版本的扫瞄器。 优点: 一个元素可以添加多个大事处理程序 缺点: IE8及以下扫瞄器不支持DOM2级大事处理程序。(包括IE8) IE大事处理程序 定义了两个方法,与上类似:attachEvent(),detachEvent()。这两个方法接收相同的两个参数:大事处理程序名称和大事处理程序函数。由于IE8以及更早版本的扫瞄器只支持大事冒泡,所以通过detachEvent()添加的大事处理程序会被添加到冒泡阶段。 var btn = document.getElementById(myBtn); btn.attachEvent(onclick, function() alert( th

7、is );/ window ); btn.attachEvent(onclick, funciton() alert(HELLO, WORLD); ); 点击按钮,这两个大事处理程序的触发挨次与上述刚好相反。不是根据添加大事处理程序的挨次触发,刚好相反。 优点:一个元素可以添加多个大事处理程序 缺点:只支持IE。 跨扫瞄器的大事处理程序 eg: var EventUtil = addHandler : function ( ele, type, handler ) if ( ele.addEventListener ) ele.addEventListener( type, handler, false ); else if ( ele.attachEvent ) ele.attachEvent( on + type, handler ); else eleon + type = handler , removeHandler: function ( ele, type, handler ) if ( ele.removeEventListener ) ele.removeEventListener

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论