zoukankan      html  css  js  c++  java
  • [13.事件]事件的基本要点

    DOM级别理解:DOM分为1级、2级、3级,后一级是前一级的补充和扩展,IE4及Netscape Communicator4是浏览器发展的标志性里程碑,DOM 0级并不存在,只是用来指代这个时段的参照点。

    事件流

    • 1.事件冒泡。
    • 2.事件捕获。
    • DOM2级事件规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。

    事件监听

    • IE8及以下版本:attachEvent('eventName',callback)、detachEvent('eventName',callback)
    • 其它:addEventListener('eventName',callback,boolean)、removeEventListener('eventName',callback,boolean),boolean为true时表示事件捕获阶段调用函数,boolean为false时表示事件冒泡阶段调用函数。

    事件对象(event)

    • DOM事件对象共有的属性和方法有:bubbles、cancelable、currentTarget、defaultPrevented、detail、eventPhase、preventDefault()、stopImmediatePropagation()、stopPropagation()、target、trusted、type、view
    • IE中事件对象共有的属性和方法有:cancelBubble、returnValue、srcElement、type
    • //制作事件监听和事件对象的兼容方法
      var EventUtil={
          //增加事件监听
          addHandler:function(element,type,handler){
              if(element.addEventListener){
                  element.addEventListener(type,handler,false);
              }else if(element.attachEvent){
                  element.attachEvent('on'+type,handler);
              }else{
                  element['on'+type]=handler;
              }
          },
          //删除事件监听
          removeHandler:function(element,type,handler){
              if(element.removeEventListener){
                  element.removeEventListener(type,handler,false);
              }else if(element.detachEvent){
                  element.datachEvent('on'+type,handler);
              }else{
                  element['on'+type]=null;
              }
          },
          //获得event对象
          getEvent:function(event){
          return event?event:window.event;
          },
          //获得event对象的target属性
          getTarget:function(event){
          return event.target||event.srcElement;
          }
          //取消事件的默认行为,前提cancelable为true
          preventDefault:function(event){
          if(event.preventDefault){
              event.preventDefault();
          }else{
              event.returnValue=false;
          }
          },
          //取消事件的进一步捕获或冒泡,前提bubbles为true
          stopPropagation:function(event){
              if(event.stopPropagation){
                  event.stopPropagation();
              }else{
                  event.cancelBubble=true;
              }
          }
      }
      //调用
      var btn=document.getElementById('mybtn');
      EventUtil.addHandler(btn,'click',handler);
      EventUtil.removeHandler(btn,'click',handler);
  • 相关阅读:
    链表的常用操作
    android简易论坛的制作
    Bmob后端云的使用
    马哥第九周
    马哥第八周
    马哥第七周
    马哥第六周
    马哥第五周
    马哥第四周
    马哥第三周
  • 原文地址:https://www.cnblogs.com/zhenxianluo/p/6106311.html
Copyright © 2011-2022 走看看