JavaScirpt中的事件处理程序

事件处理在JS中可谓是点睛一笔,JS的事件处理程序使得JS成为了网页交互层的第一把交椅。那么,JS中有几种事件处理程序呢?浏览器

1.DOM0级事件处理程序函数

经过JS指定事件处理程序的传统方式,就是将一个函数添加给一个对象的事件处理程序。这种方式为现代全部的浏览器所用。缘由一是方便简单,缘由二是能够实现跨浏览器。this

1     var oA = document.getElementsByTagName("a")[0]; 2         oA.onclick = function(){ 3             alert(this.id); 4 
5     }    

咱们经过一个doucment对象获取到一个A标签的引用,而后在这个引用上添加onclick事件,可是有一点须要注意,添加事件那一段代码若是没有执行,就不会指定事件处理程序,因此,代码要在页面中的a标签以后。spa

删除事件处理程序能够经过一个空引用:code

1 oA.onclick = null;

2.DOM2级事件处理程序对象

在“DOM2级事件”中定义了二个方法用来添加或者移除事件处理程序:blog

1.addEventListener();事件

2.removeEventListener();作用域

这两个方法的参数是同样的,第一个是要添加的事件类型,第二个是事件处理程序的函数名(若是用的是匿名函数,则没法移除),第三个是一个布尔值,true表明在事件捕获时期就添加该事件处理程序,false表明在事件冒泡时期添加该事件处理程序,通常都用false。兼容性的话,IE9+,Firefox,Safari,Chrome,和Opera支持DOM2级事件处理程序。rem

1     oA.addEventListener("click",handle,false); 2     oB.addEventListener("click",handle,false); 3 
4     var handle = function(){ 5         alert(this.id); 6  } 7     
8     oA.removeEventListener("click",handle,false); 9     oB.removeEventListener("click",handle,false);

在这段代码中,分别给oA和oB对象添加了click事件,在运行的时候,会先弹出oA的id,而后才是oB的id,这两个事件处理程序会按他们本身的顺序去执行。注意,这里是click事件,没有on

3.IE事件处理程序

在IE中实西现了和DOM中相似的两个方法:

1.attachEvent();

2.detachEvent();

这两个方法接受同样的参数,第一个是事件名,第二个是事件处理程序函数,用这两个方法会默认在事件冒泡中添加事件处理程序。

1     oA.attachEvent("onclick",handle); 2     oB.attachEvent("onclick",handle); 3 
4     var handle = function(){ 5         alert(this.id); 6  } 7 
8     oA.detachEvent("onclick",handle); 9     oB.detachEvent("onclick",handle);

使用这两个函数须要注意一下几点:

1.第一个参数是带on的,即onclick,这点不一样于DOM2级的两个方法。

2.做用域是不一样的,这里的this,不一样于DOM0级的做用域。在IE中的事件处理程序,会在全局做用域下运行,也就是说这里的this再也不表明事件添加的对象,而是一直表明着window对象。

3.顺序也不一样与DOM方法,这里是会先执行第二句,而后再执行第一句,和DOM2级中的顺序是相反的,是反过来执行的。

4.一样的,匿名函数不能移除事件,最好用有名字的函数。

目前支持IE事件处理程序的浏览器有IE和Opera。

 

 

  • DOM0级事件处理程序
  • DOM2级事件处理程序
  • IE事件处理程序
相关文章
相关标签/搜索