百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> addEventListener 方法绑定回车键
分享文章到:

addEventListener 方法绑定回车键

发布时间:01/15 来源: 浏览: 关键词:
addEventListener是一个侦听事件并处理相应的函数,在开发应用中我们现在用得少了,因为jq都有更简单的引用方法了,不过原生开发addEventListener用到比较多哦,我们来了解一下addEventListener用法。

addEventListener 为文档节点、document、window 或 XMLHttpRequest 注册事件处理程序,在以前我们一般是 <input type="button" onclick="...",或 document.getElementById("testButton").onclick = FuncName, 而在 DOM 中,我们用 addEventListener(IE 中用 attachEvent)。

语法

target.addEventListener(type, listener, useCapture);
target 文档节点、document、window 或 XMLHttpRequest。
type 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。
listener 实现了 EventListener 接口或者是 JavaScript 中的函数。
useCapture 是否使用捕捉,看了后面的事件流一节后就明白了,一般用 false。

例子

onkeydown绑定的回车会被之后的绑定覆盖.

 代码如下

if(document.addEventListener){ 
            document.addEventListener("keypress",fireFoxHandler, true); 
    } else{ 
            document.attachEvent("onkeypress",ieHandler); 
    } 
    //firefox回车 
    function fireFoxHandler(evt){ 
        if(evt.keyCode==13) { 
            alert('enter donw')
        } 
    } 
    //IE回车 
    function ieHandler(evt){ 
        if(evt.keyCode==13) { 
            alert('enter donw') 
        } 
    } 

深入了解addEventListener第三个参

addEventListener中的第三个参 数是useCapture, 一个bool类型。当为false时为冒泡获取(由里向外),true为capture方式(由外向里)。

 代码如下

eg1:


document.getElementById('id1').addEventListener('click', function() { console.log('id1');}, false);

document.getElementById('id2').addEventListener('click', function() { console.log('id2');}, false);


点击id2的div结果是: id2, id1


document.getElementById('id1').addEventListener('click', function() { console.log('id1');}, false); 
document.getElementById('id2').addEventListener('click', function() { console.log('id2');}, true); 


结果是: id2, id1


document.getElementById('id1').addEventListener('click', function() { console.log('id1');}, true); 
document.getElementById('id2').addEventListener('click', function() { console.log('id2');}, false); 

结果是:id1,id2


document.getElementById('id1').addEventListener('click', function() { console.log('id1');}, true); 

document.getElementById('id2').addEventListener('click', function() { console.log('id2');}, true); 

结果是:id1,id2


addEventListener-事件流

说到 addEventListener 不得不说到事件流,先说事件流对后面的解释比较方便。

当一个事件发生时,分为三个阶段:

捕获阶段 从根节点开始顺序而下,检测每个节点是否注册了事件处理程序。如果注册了事件处理程序,并且 useCapture 为 true,则调用该事件处理程序。(IE 中无此阶段。)

目标阶段 触发在目标对象本身注册的事件处理程序,也称正常事件派发阶段。

冒泡阶段 从目标节点到根节点,检测每个节点是否注册了事件处理程序,如果注册了事件处理程序,并且 useCapture 为 false,则调用该事件处理程序。

举例

 代码如下

<div id="div1">
  <div id="div2">
    <div id="div3">
      <div id="div4">
      </div>
    </div>
  </div>
</div>

如果在 d3 上点击鼠标,事件流是这样的:

捕获阶段 在 div1 处检测是否有 useCapture 为 true 的事件处理程序,若有,则执行该程序,然后再同样地处理 div2。

目标阶段 在 div3 处,发现 div3 就是鼠标点击的节点,所以这里为目标阶段,若有事件处理程序,则执行该程序,这里不论 useCapture 为 true 还是 false。

冒泡阶段 在 div2 处检测是否有 useCapture 为 false 的事件处理程序,若有,则执行该程序,然后再同样地处理 div1。

注意,上述捕获阶段和冒泡阶段中,实际上 div1 之上还应该有结点,比如有 body,但这里不讨论。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有6人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板