Eventutil函数封装

var EventUtil={

   addHandler:function(element,type,handler){ //添加事件
      if(element.addEventListener){
         element.addEventListener(type,handler,false);  //使用DOM2级方法添加事件
      }else if(element.attachEvent){                    //使用IE方法添加事件
         element.attachEvent("on"+type,handler);
      }else{
         element["on"+type]=handler;          //使用DOM0级方法添加事件
      }
   },  

   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){  //使用这个方法跨浏览器取得event对象
      return event?event:window.event;
   },

   getTarget:function(event){  //返回事件的实际目标
      return event.target||event.srcElement;
   },

   preventDefault:function(event){   //阻止事件的默认行为
      if(event.preventDefault){
         event.preventDefault();
      }else{
         event.returnValue=false;
      }
   },

   stopPropagation:function(event){  //立即停止事件在DOM中的传播
                                     //避免触发注册在document.body上面的事件处理程序
      if(event.stopPropagation){
         event.stopPropagation();
      }else{
         event.cancelBubble=true;
      }
   },

   getRelatedTarget:function(event){  //获取mouseover和mouseout相关元素
      if(event.relatedTarget){
         return event.relatedTarget;
      }else if(event.toElement){      //兼容IE8-
         return event.toElement;
      }else if(event.formElement){
         return event.formElement;
      }else{
         return null;
      }
   },

   getButton:function(event){    //获取mousedown或mouseup按下或释放的按钮是鼠标中的哪一个
      if(document.implementation.hasFeature("MouseEvents","2.0")){
         return event.button;
      }else{
         switch(event.button){   //将IE模型下的button属性映射为DOM模型下的button属性
            case 0:
            case 1:
            case 3:
            case 5:
            case 7:
               return 0;  //按下的是鼠标主按钮(一般是左键)
            case 2:
            case 6:
               return 2;  //按下的是中间的鼠标按钮
            case 4:
               return 1;  //鼠标次按钮(一般是右键)
         }
      }
   },

   getWheelDelta:function(event){ //获取表示鼠标滚轮滚动方向的数值
      if(event.wheelDelta){
         return event.wheelDelta;
      }else{
         return -event.detail*40;
      }
   },

   getCharCode:function(event){   //以跨浏览器取得相同的字符编码,需在keypress事件中使用
      if(typeof event.charCode=="number"){
         return event.charCode;
      }else{
         return event.keyCode;
      }
   }

};
时间: 2024-10-09 21:35:05

Eventutil函数封装的相关文章

div盒子的缓动函数封装

1.2.  缓动动画 1.2.1.       原理公式 动画公式 leader = leader + step 匀速动画公式 step = 定值 leader = leader + step 缓动动画公式 step = ( target - leader ) / 10 leader = leader + step 缓动动画的好处 他的移动是有尽头的.不像基础匀速运动那样无限移动. 有非常逼真的缓动效果,实现的动画效果更细腻. 如果不清除定时器,物体永远跟着目标leader在移动. @体验缓动动

用工厂函数封装对象

工厂函数是在方法中建立一个Object空对象,然后再对此对象添加属性和方法,然后把Object对象返回 <html> <head> <title>工厂函数封装对象</title> <script type="text/javascript"> // 工厂函数模式封装对象 //特点:返回结果为对象的函数,在用工厂函数创建对象的时候,一定要new function fn(nianling){ var obj=new object(

第5章 用函数封装程序功能

第5章 用函数封装程序功能 5.1 函数就是一个大"箱子" 5.1.1 函数的声明和定义 5.1.2 函数调用机制 5.1.3 函数的声明与函数调用 5.1.4 函数参数的传递 5.1.5 函数的返回值 5.2 内联函数 5.2.1 用体积换速度的内联函数 5.2.2 内联函数的使用规则 5.3 重载函数 5.3.1 重载函数的声明 5.3.2 重载函数的解析 5.4 函数设计的基本规则 5.4.1 函数声明的设计规则 5.4.2 函数体的设计规则 TOP

dataSet==&gt;Ilist&lt;&gt;的函数封装

一般我们用使用ADO.NET查询数据库返回泛型集合?使用SqlDataReader逐行读取数据存入对象 代码 /// <summary> /// 获取UserInfo泛型集合 /// </summary> /// <param name="connStr">数据库连接字符串</param> /// <param name="sqlStr">要查询的T-SQL</param> /// <re

使用函数封装代码

函数是一个命名的独立代码段,它执行特定的任务,并可能给调用它的程序返回一个值. 函数原型--程序后面将出现的函数的模型.函数原型包括函数名称.传递给函数的变量列表 (实 参).函数返回变量的类型.函数原型以分号结尾: 如  long cube (long x); 函数定义的第一行为函数头,它与函数原型相同,只是没有分号.另外虽然在函数原型中,参数变量名是可选的,但在函数头中必须包含.函数头的后面是函数体,其中包含函数将要执行的语句.函数体以做花括号开始以右花括号结束.如果函数返回的类型不是voi

常见的公共函数封装方法(密码强度、手机号验证、邮箱验证、输入金额验证)

//密码复杂度公共函数封装(邮箱,手机号) this.PasswordStrength = function(password) { var rule = Auto517.config.passwordRule.rule; var min = Auto517.config.passwordRule.min; var max = Auto517.config.passwordRule.max; if(rule == 0 && eval('/^[0-9]{' + min + ',' + max

c++ 回调函数封装

std::function<void(int a,int b)> ha; //函数封装  当成参数用callback  std::bind(&fun1,this,std::placeholders::_1,std::placeholders::_2)  //函数回调时使用 方便之处:类型安全.

原生JavaScript实现的图片轮播左右滑动效果函数封装

原生js实现的图片轮播左右滑动效果函数封装 方便以后需要的时候拿出来复用. 适合新手学习使用. 使用方法轮播图的html结构就不多说了.不过有一点:为了实现无缝无限轮播,需要在三张图片的最前面和最后面再额外添加两张图片(见下),原理简单说就是当图片滑动到最后一张时立马跳到第二张,眼睛看上去就像前后无缝一样. 把img_slider.js引入html,然后编辑window.onload = (function () { ··· });中的内容. (获取图片床,按钮,标识等元素.然后调用slideI

XMLHttpRequest函数封装

XMLHttpRequest函数封装: function ajax(Url,sccuessFn,failureFn) { //1.创建XMLHttpRequest对象 var xhr = null; if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); }else { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } //2.打开与服务器的链接 xhr = open('get',Url,tru