添加事件及Event对象的兼容写法

简介: 一、事件流 事件流描述的是从页面中接受事件的顺序。 IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流 1、事件冒泡 事件冒泡,即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档)。

 

一、事件流

事件流描述的是从页面中接受事件的顺序。

IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流

1、事件冒泡

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

2、事件捕获

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

二、事件处理程序

1、HTML事件处理程序

2、DOM0级事件处理程序

3、DOM2级事件处理程序

DOM2级事件定义了两个方法:用于处理指定和删除事件处理程序的操作:addEventListener()和removeEventListener()。它们都接收三个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。

4、IE事件处理程序

attachEvent()添加事件

detachEvent()删除事件

这两个方法接收相同的两个参数:事件处理程序名称与事件处理函数

5、跨浏览器的事件处理程序

三、事件对象

事件对象event

1、DOM中的事件对象

(1)、type:获取事件类型

(2)、target:事件目标

(3)、stopPropagation() 阻止事件冒泡

(4)、preventDefault() 阻止事件的默认行为

2、IE中的事件对象

(1)、type:获取事件类型

(2)、srcElement:事件目标

(3)、cancelBubble=true阻止事件冒泡

(4)、returnValue=false阻止事件的默认行为

 

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.removeEventListener){

                 element.removeEventListener(type,handler,false);

               }else if(element.detachEvent){

                 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;

           }

         }

  }

 

相关文章
|
3月前
|
C++
C++高级开发之可调用对象、function、bind(2)
std::bind 绑定器   要使用这个函数模板,在 cpp文件前面要包含如下头文件#include<funcitonal>   std::bind能够将对象以及相关的参数绑定到一起,绑定完成后可以直接调用,也可以用
30 0
|
3月前
|
C++
C++高级开发之可调用对象、function、bind(1)
可调用对象   以前函数调用总是离不开一堆圆括号,没错“()”就是函数调用的一个明显标记,这个 “()”有一个称呼叫函数调用运算符。
41 0
|
4月前
|
存储 C++
【C++11特性篇】玩转C++11中的包装器(function&bind)
【C++11特性篇】玩转C++11中的包装器(function&bind)
|
9月前
|
JavaScript 前端开发
JavaScript的事件event对象(下)
什么是事件对象 当触发某个事件时,会产生一个事件对象,这个对象包含着所有与事件有关的信息 。包括导致事件的元素、事件的类型、以及其它与特定事件相关的信息
46 0
|
9月前
|
人工智能 前端开发 JavaScript
JavaScript的事件event对象(中)
事件对象也存在一定的兼容性问题,在IE8及以前本版之中,通过设置属性注册事件处理程序时,调用的时候并未传递事件对象,需要通过全局对象window.event来获取。解决方法如下:
4156 0
|
9月前
|
Web App开发 人工智能 JavaScript
JavaScript的事件event对象(上)
事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,chrome和火狐的事件流是捕获流
95 0
JavaScript的事件event对象(上)
|
前端开发 JavaScript
element组件的属性、事件和方法怎么使用
我们在使用element组件的时候,经常会使用到组件的属性、事件和方法,但对于第一次接触element组件的小白来说,由于没有代码示例,所以不知道怎么使用组件的属性、事件和方法是很常见的情况,所以本文将教会大家怎么去使用element组件的属性、事件和方法
300 0
element组件的属性、事件和方法怎么使用
|
小程序
小程序--event对象
小程序--event对象
392 0
小程序--event对象
|
JavaScript 前端开发
Javascript中常用事件集合和事件使用方法
Javascript中常用事件集合和事件使用方法
Javascript中常用事件集合和事件使用方法
|
JavaScript 前端开发 容器
JavaScript事件处理的例子:事件捕捉和冒泡 - event capture and bubble
JavaScript事件处理的例子:事件捕捉和冒泡 - event capture and bubble
220 0
JavaScript事件处理的例子:事件捕捉和冒泡 - event capture and bubble