zoukankan      html  css  js  c++  java
  • 添加事件及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;

               }

             }

      }

  • 相关阅读:
    Html禁止粘贴 复制 剪切
    表单标签
    自构BeanHandler(用BeansUtils)
    spring配置中引入properties
    How Subcontracting Cockpit ME2ON creates SD delivery?
    cascadia code一款很好看的微软字体
    How condition value calculated in sap
    Code in SAP query
    SO Pricing not updated for partial billing items
    Javascript learning
  • 原文地址:https://www.cnblogs.com/ranyonsue/p/5535487.html
Copyright © 2011-2022 走看看