• 添加事件及Event对象的兼容写法


    一、事件流

    事件流描述的是从页面中接受事件的顺序。

    IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流

    1、事件冒泡

    事件冒泡,即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档)。

    2、事件捕获

    事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。

    二、事件处理程序

    1、HTML事件处理程序

    2、DOM0级事件处理程序

    3、DOM2级事件处理程序

    DOM2级事件定义了两个方法:用于处理指定和删除事件处理程序的操作:addEventListener()和removeEventListener()。它们都接收三个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。

    4、IE事件处理程序

    attachEvent()添加事件

    detachEvent()删除事件

    这两个方法接收相同的两个参数:事件处理程序名称与事件处理函数

    5、跨浏览器的事件处理程序

    三、事件对象

    事件对象event

    1、DOM中的事件对象

    (1)、type:获取事件类型

    (2)、target:事件目标

    (3)、stopPropagation() 阻止事件冒泡

    (4)、preventDefault() 阻止事件的默认行为

    2、IE中的事件对象

    (1)、type:获取事件类型

    (2)、srcElement:事件目标

    (3)、cancelBubble=true阻止事件冒泡

    (4)、returnValue=false阻止事件的默认行为

    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.detachEvent('on'+type,handler);

                   }else{

                     element['on'+type]=null;

                   }

               },

                // 获取兼容事件对象

              getEvent:function(event){

                return event?event:window.event;

              },

    // 获取兼容的事件类型

              getType:function(event){

                return event.type;

              },

    // 获取兼容事件源,既触发事件的元素(事件的目标节点)

              getElement:function(event){

                return event.target || event.srcElement;

              },

    // 取消兼容默认事件

              preventDefault:function(event){

                if(event.preventDefault){

                  event.preventDefault();

                }else{

                  event.returnValue=false;

                }

              },

    // 防止兼容冒泡

             stopPropagation:function(event){

               if(event.stopPropagation){

                 event.stopPropagation();

               }else{

                 event.cancelBubble=true;

               }

             }

      }

  • 相关阅读:
    实现UILabel渐变色效果
    设计模式-原型模式
    计算一/二元一次方程的类(用于动画控制)
    【转】VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别
    【转】VMware虚拟机系统无法上网怎么办?
    【转】Android tools:context
    【转】android布局--Android fill_parent、wrap_content和match_parent的区别
    【转】在程序中设置android:gravity 和 android:layout_Gravity属性
    【转】android gravity属性 和 weight属性
    【转】Android xml资源文件中@、@android:type、@*、?、@+含义和区别
  • 原文地址:https://www.cnblogs.com/ranyonsue/p/5535487.html
Copyright © 2020-2023  润新知