javascript 事件处理程序

作者: 柴柴总 | 来源:发表于2017-01-19 22:23 被阅读0次
  • 事件冒泡:事件在文档树上向上传播,如有以下结构

    <html>
     <body>
     <div>
      <input type="button"/>
     </div>
     </body>
    </html>
    

当用户点击按钮时,首先在按钮上触发点击事件,接着在包着按钮的div上触发点击事件,然后是body......

  • 事件捕获:在文档树上向下传播,从外层到里层,与时间冒泡传播顺序正好相反。在容器上注册的时间处理程序有机会在事件传播到真实的目标之间捕获它。IE8及以下版本不支持事件捕获。

一 DOM事件

1 HTML事件
缺点:耦合程度高,更改js代码时常常需要修改html里的代码
如:

<input type="button"/ onclick="showMes()">
<script>
 function showMes()
{
alert("hello world")
 }
</script>

2 DOM0级事件
如:

var btn=document.getElementById("btn");
btn.onclick=function(){
...
}

缺点:每个事件目标对于每个特定类型都只能有一种事件处理程序
3 DOM2级事件
addEventListener()
removeEventListener()
上面两个方法都是传入三个参数

  • 事件类型 如click mouseover 注意不用加on
  • 事件函数
  • 布尔值 一般为false true 表示函数将注册为捕获事件处理函数,并在事件的不同调度阶段调用
    支持DOM事件的浏览器有:Chrome,火狐等
    <code>
    btn.addEventListener("click",showMes,false)
    </code>

二 IE事件

提供如下两个方法

1 attachEvent() 添加事件

2 detachEvent() 删除时间

且两个方法传入相同的参数(事件处理程序的名称,事件处理程序的函数)

支持的浏览器:IE8及以下

三 解决浏览器兼容问题

可以根据能力判断来写兼容浏览器的事件处理程序的代码

     // 封装添加事件监听程序
        function addEvent(ele,type,hander){
           // 支持DOM2级
           if(ele.addEventListener){
           ele.addEventListener(type,hander,false);
         }
//不支持DOM2级,支持IE事件
         else if(ele.attachEvent)
         {
          ele.attachEvent('on'+type,hander);
         }
//既不支持DOM2级也不支持IE,只能用DOM0级
         else ele['on'+type]=hander;
        }

<b>
注意:在javascript中,对象的写法等价于中括号的写法
ele.onclick等价于ele['onclick']
</b>

四 事件对象

  1. DOM中的事件对象
  • type 获取事件类型
  • target 获取事件目标
  • stopPropagation() 阻止事件冒泡
  • preventDefault() 阻止事件的默认行为
  1. IE中的事件对象
  • type 获取事件类型
  • scrElement 获取事件目标
  • cancelBubble 用于阻止事件冒泡(是个属性,设为true表示阻止冒泡,设为false表示不阻止冒泡)
  • returnValue 该属性用于阻止默认行为,设为false表示阻止

本文的撰写参考自javascript权威指南第六版以及慕课网上相关教程,错漏之处,欢迎指正。

相关文章

  • 带你深入理解DOM0级事件处理程序!!!

    DOM0级事件处理程序 通过JavaScript指定事件处理程序的传统方式,就是将一个函数赋值给一个事件处理程序属...

  • DOM0级事件处理及DOM2级事件处理

    DOM0级事件处理程序 通过JavaScript指定事件处理程序的传统方式,就是将一个函数赋值给一个事件处理程序属...

  • JavaScript事件处理程序

    事件处理程序 事件:用户和浏览器执行的操作事件处理程序:响应时间的函数方法:**1.直接在HTML标签中给同名的事...

  • 【javascript】事件处理程序

    事件处理程序 事件就是用户或浏览器自身执行的某种动作,而响应某个事件的函数就叫做事件处理程序。 1、HTML 事件...

  • javascript 事件处理程序

    事件冒泡:事件在文档树上向上传播,如有以下结构 当用户点击按钮时,首先在按钮上触发点击事件,接着在包着按钮的div...

  • js 事件委托 事件代理

    js 事件委托 事件代理 JavaScript高级程序设计上解释:事件委托就是利用事件冒泡,只指定一个事件处理程序...

  • DOM事件委托

    事件代理又叫事件委托,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可...

  • DOM 事件委托

    事件代理又叫事件委托,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可...

  • JavaScript事件02——事件处理程序

    大纲:概念(事件处理程序)事件处理程序(HTML事件,DOM0级,DOM2级,IE事件,跨浏览器) 一、概念: 1...

  • 事件委托

    一、定义 JavaScript高级程序设计的话来讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某...

网友评论

    本文标题:javascript 事件处理程序

    本文链接:https://www.haomeiwen.com/subject/qroibttx.html