DOM2级事件处理程序,事件监听

“DOM2级事件”定义了两个方法,用于处理指定和删除事件处理程序的操作: addEventListener() 和 removeEventListener()。所有DOM节点中都包含这两种方法,并且他们都接受3个参数:要处理的事件名,作为事件处理程序的函数和一个布尔值。最后这个布尔值参数如果是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。
要在按钮上为click时间添加事件处理程序,可以使用下列代码:

var btn = document.getElementById("myBtn");
btn.addEventListener("click",function(){
      alert(this.id);
},false);

上面的代码为一个按钮添加onclick 时间长护理程序,而且该事件会在冒泡阶段被触发。(因为最后一个参数是false)。与DOM0级方法一样,这里添加的事件处理程序也是与其依附的元素的作用于中运行。使用DOM2级方法处理事件处理程序的主要好处是可以添加多个事件处理程序。

var btn = document.getElementById("myBtn");
btn.addEventListener("click".function(){
      alert(this.id);
},false);
btn.addEventListener("click",function(){
      alert("Hello World");
},false);

这里为按钮添加两个事件处理程序。这两个事件处理程序会按照添加他们的顺序出发,因此首先会显示元素的ID,其次会显示“Hello World!”消息。
通过addEventListener()添加的事件处理程序 只能使用removeEventListener()来移除;移除时传入的参数与处理程序时使用的参数想通。这也意味着通过addEventListener()添加的匿名函数将无法移除,如下面的例子所示。

var btn = document.getElementById("myBtn");
    var handler = function(){
        alert(this.id);
    };
btn.addEventListener("click", handler, false);
btn.removeEventListener("click", handler, false); 

大多数情况下,都是将事件处理程序添加到时间流的冒泡阶段,这样可以最大限度地兼容各种浏览器。最好只在需要在事件到达目标之前截获它的时候将事件处理程序添加到捕获阶段。如果不是特别需要,不建议在事件捕获阶段注册时事件处理程序。

IE中,attachEvent(),detachEvent()。这两个方法接受相同的两个参数:事件处理程序名称与时间处理程序函数。由于IE8及更早版本只支持时间冒泡,所以通过attachEvent()添加的事件处理程序都会被添加到冒泡阶段。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JavaScript 程序采用了异步事件驱动编程模型。在这种程序设计风格下,当文档、浏览器、元素或与之相关的对象发...
    劼哥stone阅读 5,028评论 3 11
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 11,944评论 1 6
  • 一、问答 1. dom对象的innerText和innerHTML有什么区别? innerHTML: 也就是从对象...
    饥人谷_罗伟恩阅读 3,826评论 0 2
  • 如何批量操作 css 如何获取 DOM 计算后的样式 使用getComputedStyle获取元素计算后的样式 实...
    _Dot912阅读 3,655评论 1 3
  • 日子一天天逝去,我一天天地成长。不禁思索,在这过程中我得到了什么?又失去了什么? 琼丶安德森曾发出感慨:“在一个人...
    辞芜阅读 1,326评论 2 0