码迷,mamicode.com
首页 > 其他好文 > 详细

DOM事件研究

时间:2016-08-19 14:35:43      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

一、事件流

1.1 事件冒泡

事件是文档或浏览器窗口中发生的特定的交互瞬间。

事件流: 描述的是从页面中接受事件的顺序(IE: 事件冒泡流 / Netscape事件捕获流)

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

 

1.2 事件捕获

事件捕获:与事件冒泡是截然相反的,它的定义是不太具体的节点应该更早的接收到事件,而最具体的节点最后接收到事件。

 

二、 事件处理程序

2.1 html事件处理程序

html事件处理程序,现在不建议使用。 事件直接加在html代码中。缺点是:html和js代码高度耦合,如果修改,就要修改两个地方:html元素和JavaScript函数。

 

2.2 DOM0级事件处理程序(用的比较多)

先把元素取出来,然后为其属性添加一个事件的方法叫做DOM0级处理程序。

它是一种较传统的方式,把一个函数赋值给一个事件处理程序的属性。

优点:简单,跨浏览器的优势。

1 var btn2 = document.getElementById("btn2");       //先取出元素,定义对象
2     btn2.onclick =  function(){alert(‘这是通过DOM0级添加的事件!‘)}   //让事件以对象属性的形式出现
3 btn2.onclick = null; //删除onclick属性

 

2.3 DOM2级事件处理程序

DOM2事件 定义了两个方法:

adEventListener() 添加事件

removeEventListener() 移除事件

三个参数设置: 事件名称,处理方法(函数),布尔值---冒泡(false)或捕获(true)

 

btn3.addEventListener(‘click‘,showMes,false)

注意:

1、 若事件名称有on,则需去掉on。 onclick---->click , onmouseover----->mouseover等等;

2、 false兼容所有浏览器 ----事件冒泡流。

3、 通过addEventListener添加的事件只能通过removeEventListener来删除。  // 参数要一样

btn.removeEventListener(参数)必须和btn.addEventListener(参数)  //删除事件,参数要一致

 

与DOM0级共同优点:可以给一个属性或事件上绑定多个函数,会按照顺序执行。

btn3.addEventListener(‘click‘,showMess,false);

 

缺点:DOM2级事件处理程序,不被IE支持,IE有专用的事件处理程序。

 

2.4 IE事件处理程序

IE也提供了类似DOM0级和DOM2级事件处理程序

attachEvent()  //添加事件

deatchEvent()  //删除事件

接收两个相同的参数,事件处理程序的名称和事件处理程序的函数。

去掉了布尔值,不适用第三个参数的原因:--IE8及更早版本只支持事件冒泡

btn3.attachEvent(‘onclick‘,showMes);  //注意,在IE事件处理程序中,要把on加上
btn3.deatchEvent(‘onclick‘,showMes); //支持IE事件处理程序的浏览器主要有 IE和Opera

 

*封装跨浏览器事件处理程序*

//删除句柄
removeHandler:function(elemnt,type,hanler){
  if(elemnt.removeEventListener){    //处理DOM2级处理事件
    elemnt.removeEventListener(type,hanler,false);
  }else if(element.deatchEvent){    //处理IE事件
    element.deatchEvent(‘on‘+type,hanler);
  }else{
    element[‘on‘+type] = null;
  }
}

 

三、 事件对象

3.1 DOM中的事件对象

定义:在触发DOM上的事件时都会产生一个对象

事件对象event

1、type属性 用于获取事件类型

2、target属性 用于获取事件目标

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

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

 

DOM事件对象:

event.type / event.srcElement / event.stopPropagation / event.preventDefault

IE8以下事件对象:

event.type / event.target / event.cancelBubble = true / event.returnValue = false

DOM事件研究

标签:

原文地址:http://www.cnblogs.com/d-lion/p/5787228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!