跨浏览器的事件对象

由于ie和其它浏览器的区别,在对DOM进行事件注册的和使用event对象的时候,需要一种快捷的封装好的工具方法。

var EventUtil = {
  addHandler: function(element, type, handler) {
    if (element.addEventListener) { //dom2级事件处理程序
        element.addEventListener(element, type, handler);
    } else if (element.attachEvent) { //检测ie的事件处理程序
        element.attachEvent('on' + type, handler);
    } else {
        element['on' + type] = handler; //dom0级事件处理程序
    }
  },
  
  getEvent: function(event) {
    return event ? event : window.event;
  },

  getTarget: function(event) {
    return event.target ? event.target : event.srcElement;
  },

  preventDefault: function(event) { //阻止默认行为,比如链接的跳转,表单的提交
    if (event.preventDefault) {
        event.preventDefault();
    } else {
        event.returnValue = false; //ie下阻止默认行为
    }
  },

  removeHandler: function(element, type, handler) {
    if (element.removeEventListener) {
        element.removeEventListener(element, type, handler);
    } else if (element.detachEvent) {
        element.detachEvent('on' + type, handler);
    } else {
        element['on' + type] == null;
    }
  },

//由于事件在dom层中传播会造成事件捕捉和事件冒泡,这里直接在元素上添加事件而阻止其在  
  dom中传播
  stopPropagation: function(event) {
    if (event.stopPropagation) {
        event.stopPropagation();
    } else {
        event.cancelBubble = true;
    }
  }
};

上面就是封装的一个工具对象用法大概如下

oDiv.onclick = function(event) {
  event = EventUtil.getEvent(event);
  var target = event.getTarget(event);
  EventUtil.stopPropgation(event);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 虽然DOM和IE中的event对象不同,但基于他们之间相似依旧可以拿出跨浏览器方案来。 以上代码显示,我们为Eve...
    Miss_Fairy阅读 3,051评论 0 0
  • 设置EventUtil对象来处理浏览器间的差异 addHandler()方法接受3个参数:要操作的元素、事件名称和...
    wanpan__阅读 2,649评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,552评论 25 709
  • 这,是一篇来自童教学院学员的真实自述! 笔者是一名小学教师,在近二十年教学生涯中,见过形形色色的学生,有天资聪慧的...
    童教脑潜能阅读 2,934评论 0 0
  • 话说贞观21年,一天唐太宗在朝堂上思考国家大事:西域吐蕃(现在的西藏)日益强盛,我大唐疆土辽阔,若有谋反...
    淡淡花飞DDHF阅读 3,437评论 0 3

友情链接更多精彩内容