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;
    }
  },
  getEvent : function(event){
    return event ? event:window.event;
  },
  getTarget : function(event){
    return event.target || event.srcElement;
  },
  prevemtDefault : function(event){
    if(event.preventDefault){
      event.preventDefault()
    }else{
      event.returnValue = false;
    }
  },
  removeHandler:function(element,type,handler){
    if(element.addEventListener){
      element.removeEventListener(type,handler,false)
    }else if(element.attachEvent){
      element.detachEvent("on"+type,handler)
    }else{
      element["on"+type] = null;
    }
  },
  stopPropagation : function(event){
    if(event.stopPropagation){
      event.stopPropagation();
    }else{
      event.cancelBubble = true;
    }
  },
  getCharCode : function(){
    if(typeof event.charCode == "number"){
      return event.charCode;
    }else{
      return event.keyCode;
    }
  }
}

EventUtil.addHandler(btn,"click",function(event){
  event = EventUtil.getEvent(event);
  alert("client coordinates:" + event.clientX+","+event.clientY)
});
EventUtil.addHandler(document,"mousewheel",function(event){
  event = EventUtil.getEvent(event);
  console.log("client coordinates:" + event.wheelDelta)
});
EventUtil.addHandler(myDiv,"contextmenu",function(event){
  event = EventUtil.getEvent(event);
  EventUtil.preventDefault(event);
  var menu = document.getElementById("myMenu");
  menu.style.left=event.clientX+"px";
  menu.style.top=event.clientY+"px";
  menu.style.visibility = "visible";
});
EventUtil.addHandler(document,"click",function(event){
  document.getElementById("myMenu").style.visibility = "hidden"
});

EventUtil对象的更多相关文章

  1. [H5表单]一些html5表单知识及EventUtil对象完善

    紧接着上面的文章,一开始准备一篇文章搞定,后来看到,要总结的东西还不少,干脆,把上面文章拆成两部分吧,这部分主要讲讲表单知识! 表单知识 1.Html5的autofocus属性. 有个这个属性,我们不 ...

  2. 跨浏览器的事件对象-------EventUtil 中的方法及用法

    什么是EventUti----封装好的事件对象 在JavaScript中,DOM0级.DOM2级与旧版本IE(8-)为对象添加事件的方法不同 为了以跨浏览器的方式处理事件,需要编写一段“通用代码”,即 ...

  3. EventUtil——跨浏览器的事件对象

    . 首页 博客园 联系我 前言:什么是EventUtil?. EventUtil对象全见. addHandler方法. removeHandler方法. event对象与getEvent方法. tar ...

  4. JavaScript中的事件对象

    JavaScript中的事件对象 JavaScript中的事件对象是非常重要的,恐怕是我们在项目中使用的最多的了.在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有 ...

  5. 【前端】跨浏览器事件处理程序EventUtil.js个人注释及详解

    <javascript高级程序设计>跨浏览器事件处理程序EventUtil.js个人注释 EventUtil.js // 跨浏览器事件处理程序封装 var EventUtil = { // ...

  6. 常用原生JS方法总结(兼容性写法)

    经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...

  7. javascript 表单

    在HTML中,表单是由<form>元素来组成的.在js中,表单对应的则是HTMLFormElement类型.它和其他HTML元素一样具有相同的默认属性.下面是HTMLFormElement ...

  8. 常用原生JS方法

    备注:一下的方法都是包裹在一个EventUtil对象里面的,直接采用对象字面量定义方法了... ①添加事件方法 1 2 3 4 5 6 7 8 9 addHandler:function(elemen ...

  9. Html5+NodeJS——拖拽多个文件上传到服务器

    实现多文件拖拽上传的简易Node项目,可以在github上下载,你可以先下载下来:https://github.com/Johnharvy/upLoadFiles/. 解开下载下的zip格式包,建议用 ...

随机推荐

  1. 扒开系统调用的三层皮(下)/给MenuOS增加time和time-asm命令

    上周从用户态的角度去理解系统调用 这周通过内核的方式 调试和跟踪系统调用来理解 rm menu -rf  强制删除原menu文件 git clone https://github.com/mengni ...

  2. 钓鱼WIFI搭建

      1.无线网卡 2.KaliLinux操作系统,这里就不用说了,必备的 3.isc-dhcp-server服务器.安装好KaliLinux后只需要apt-get update 然后apt-get i ...

  3. Apache Kafka之设计

    转自: http://blog.csdn.net/kevin_hx001/article/details/9413565        http://kafka.apache.org/design.h ...

  4. SSM框架下分页的实现(封装page.java和List<?>)

    之前写过一篇博客  java分页的实现(后台工具类和前台jsp页面),介绍了分页的原理. 今天整合了Spring和SpringMVC和MyBatis,做了增删改查和分页,之前的逻辑都写在了Servle ...

  5. ubuntu16.04后续工作

    一.ruijie https://blog.csdn.net/u012217085/article/details/24369335 https://blog.csdn.net/Lv_Victor/a ...

  6. 谈一谈最近关闭的Kindle人论坛

    最近Kindle圈子内最大的论坛“Kindle人”关闭了,倒也掀起了一阵小波澜.Kindle人论坛是K友圈子里比较著名的一个“Kindle资源分享论坛”,这么一说其实混了这么久网络,大家都知道这个论坛 ...

  7. 解决silk-v3-decoder-master转换wav时,百度语音解析问题

    $cur_dir/silk/decoder >& if [ ! -f "$1.pcm" ]; then /usr/local/ffmpeg/bin/ffmpeg -y ...

  8. hadoop2.6.0的eclipse插件安装

    1.安装插件 下载插件hadoop-eclipse-plugin-2.6.0.jar并将其放到eclips安装目录->plugins(插件)文件夹下.然后启动eclipse. 配置 hadoop ...

  9. javascript中的__proto__ 和prototype

    不错的一张图

  10. 设计模式--单例模式C++实现

    单例模式C++实现 1描述: 单例模式,又称单件模式. 定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 2具体类图描述: 2.1 StartUML内部生成模式类图 该类图由S ...