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'));
需要注意的是:
- 在上面代码中的this,指向的是匿名函数的运行时的this,而非BB对象。
- keyup前面不要加’on’
- 如果省略第三个参数“document.getElementById(‘age’)” ,则事件将添加到document对像上
- 如果你需要对IE 5.5或更低的浏览器保持兼容,那你需要对BB.EVENT.supportDOM == -1的情况做进一步处理:先将老事件保存,添加你的新事件,在你的新事件运行完后,再处理老事件……老实说,在IE 6都不足10%的环境下,真无必要!
关于 江波
UI设计师、关注前端及交互技术,期望能做出创造性的产品!