简单的DOM事件处理函数

var BB = {};  /*为什么用BB?因为本站名为BlueBala!*/
BB.EVENT = {
  supportDOM : document.addEventListener ? 1 : (document.attachEvent ? 0 : -1),
  //supportDOM:
  	//1: ff/webkit/opera...(标准2级DOM支持)
	//0:ie 5.5+
	//-1:不支持高级DOM事件模型
  addEvent : (function(eEvent,fFun,oObj){
  //增加事件
    if (!oObj){
      oObj = document;
    }
    if (BB.EVENT.supportDOM == 1) {
      oObj.addEventListener(eEvent, fFun, true);
    }else if(BB.EVENT.supportDOM == 0){
      oObj.attachEvent('on' + eEvent, fFun);
    }else if(BB.EVENT.supportDOM == -1){
      return false;
      alert ("不支持2级DOM模型");
    }
  }),
  removeEvent : (function(eEvent,fFun,oObj){
  //移除事件
    if (!oObj){
      oObj = document;
    }
    if (BB.EVENT.supportDOM == 1) {
      oObj.removeEventListener(eEvent, fFun, true);
    }else if(BB.EVENT.supportDOM == 0){
      oObj.detachEvent('on' + eEvent, fFun);
    }else if(BB.EVENT.supportDOM == -1){
      return false;
      alert ("不支持2级DOM模型");
    }
  })
};

一个很简单的2级DOM事件处理器,用法如下:

BB.EVENT.addEvent('keyup',function(){
  this.value = this.value.replace(/\D/,'');
},document.getElementById('age'));

需要注意的是:

  1. 在上面代码中的this,指向的是匿名函数的运行时的this,而非BB对象。
  2. keyup前面不要加’on’
  3. 如果省略第三个参数“document.getElementById(‘age’)” ,则事件将添加到document对像上
  4. 如果你需要对IE 5.5或更低的浏览器保持兼容,那你需要对BB.EVENT.supportDOM == -1的情况做进一步处理:先将老事件保存,添加你的新事件,在你的新事件运行完后,再处理老事件……老实说,在IE 6都不足10%的环境下,真无必要!

关于 江波

UI设计师、关注前端及交互技术,期望能做出创造性的产品!
此条目发表在 学习笔记 分类目录,贴了 , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>