DOM事件对象、IE事件对象、旧浏览器事件对象的JavaScript区别

事件流:

事件冒泡:即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档)。

事件捕获:不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。

DOM2级事件处理程序:

.addEventListener();      .removeEventListener();

在IE浏览器中不起作用!IE事件处理程序:

.attachEvent();     .detachEvent();

跨浏览器常用事件处理程序:

var eventUtil = {

              //添加句柄

             addHandler:function(element,type,handler){

                  if(element.addEventListener){                              //DOM2级事件监听

                     element.addEventListener(type,handler,false);

                 }else if(element.attachEvent){                              //IE浏览器事件监听

                     element.attachEvent(‘on‘+type,handler);

                 }else{                                                                //旧版浏览器事件监听

                     element[‘on‘+type]=handler;

                 }

         },

         //删除句柄

             removeHandler:function(element,type,handler){

                  if(element.removeEventListener){                              //DOM2级事件监听

                     element.removeEventListener(type,handler,false);

                 }else if(element.detachEvent){                              //IE浏览器事件监听

                     element.detachEvent(‘on‘+type,handler);

                 }else{                                                                //旧版浏览器事件监听

                     element[‘on‘+type]=null;

                 }

         },

         //获得事件

         getEvent:function(event){

              return event?event:window.event;

         },

          //获得事件类型

          getType:function(event){

              return event.type;

         },

          //获得事件目标(事件来源于哪个元素)

          getElement:function(event){

              return event.target || event.srcElement;

          };

          //阻止默认行为

           preventDefault:function(event){

                       if(event.preventDefault){

                       event.preventDefault();

                       }else{

                        event.returnValue=false;

                       }

         },

          //阻止冒泡行为

         stopPropagation:function(event){

                  if(event.stopPropagation){

                       event.stopPropagation();

                  }else{

                     event.cancelBubble=true;

                  }

         }

}          

使用举例:eventUtil.addHandler(元素ID,‘click‘,函数名);

eventUtil.removeHandler(元素ID,‘click‘,函数名);

DOM.preventDefault()方法:阻止事件的默认行为,比如:<a href=‘#‘>超链接</a>

IE中用returnValue属性阻止事件的默认行为:设置为false表示阻止事件的默认行为

获取事件目标:

DOM.target.                       IE.srcElement.

比如:  event = event || window.event ;           //因为与旧版浏览器的区别

var ele = event.target || event.srcElement ;       //因为DOM与IE的区别

DOM .stopPropagation()方法:用于阻止事件冒泡

IE用cancelBubble属性阻止时间冒泡:设置为true表示阻止冒泡,设置为false表示不阻止冒泡

时间: 2024-10-12 15:29:18

DOM事件对象、IE事件对象、旧浏览器事件对象的JavaScript区别的相关文章

跨浏览器事件对象封装

封装一个能够隔离浏览器差异的JavaScript库EventUtil,主要是使用能力检测. var EventUtil={ addHandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent('on'+type,handler)

Event Handler 事件处理程序 2 ---跨浏览器事件对象《高程3》

0 Event Object导论 支持DOM0.DOM2的浏览器和IE浏览器实现事件处理程序的不同,除了体现在添加事件处理程序的不同上,还体现在event对象的实现差异上,包括具体的属性和方法.在触发DOM上的某个事件时,都会产生一个event对象,这个对象包含着所有与事件有关的信息.一旦事件处理程序执行完成,event对象就会被销毁.所有浏览器对event的支持方式包括:DOM事件对象和IE事件对象. 1.1 DOM0和DOM2支持的Event对象(针对IE之外的浏览器) 兼容 DOM 的浏览

跨浏览器事件对象代码

<script type="text/javascript"> var EventUtil = { addHandler:function(element,type,handler){ if (element.addEventListener) { element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent("on"+ty

跨浏览器事件对象

var EventUtil = { addHandler: function(elem,type,handler){ if (elem.addEventListener) { elem.addEventListener(type, handler, false); }else if(elem.attachEvent){ elem.attachEvent('on'+type,handler); }else{ elem["on"+type] = handler; } }, removeHa

javascript跨浏览器事件对象类库

一.前言 学习了javascript事件后,个人总结归纳了跨浏览器事件对象类库,方便以后使用,现分享给大家. 二.事件对象封装 将对浏览器事件对象的操作封装成eventObject.js方便调用 //跨浏览器事件对象的操作 var EventUtil = { //绑定事件处理程序 addHandler : function(element, type, handler){ if(element.addEventListener){//DOM2级事件处理程序 element.addEventLis

jQuery事件对象的作用(利用冒泡事件优化)

事件中的Event对象容易被初学者忽略掉,可能大多时候初学者不知道怎么去用它,但有些时候它还是非常有用的 一个标准的"click"点击事件 $(elem).on("click",function(event){ event //事件对象 }) 在不同浏览器之间事件对象的获取, 以及事件对象的属性都有差异.jQuery根据 W3C 标准规范了事件对象,所以在jQuery事件回调方法中获取到的事件对象是经过兼容后处理过的一个标准的跨浏览器对象 这里不在千篇一律的说方法的

Delphi中Twebbrowser的document 对象的属性、方法、事件一览(转)

Delphi中Twebbrowser的document 对象的属性.方法.事件一览(转) 2012-12-07 10:19:39|  分类: Delphi 零碎 |  标签:webbrowser  属性  方法  事件  delphi   |举报 |字号大中小 订阅 {ihtmldocument2 方法:}write //写入writeln //写入并换行open //打开一个流,以收集 document.write 或 document.writeln 的输出close //关闭并输出用 do

[原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

[WPF] 动画Completed事件里获取执行该动画的UI对象

原文:[WPF] 动画Completed事件里获取执行该动画的UI对象 昨天群里有位童鞋提出如何在动画完成事件Completed里获取到执行该动画的UI对象. WPF里动画的Completed的本身并不会返回执行动画的UI对象,但我们可以利用附加属性Storyboard.TargetProperty来达到我们想要的效果. 步骤: 1 在执行动画前,先附加属性记录对象 DoubleAnimation ani = new DoubleAnimation(); ani.From = start; an