在web开发中,因为浏览器之间的实现差异,一些嗅探工作总是不可避免。
var addEvent = function( elem, type, handler ){
if ( window.addEventListener ){
return elem.addEventListener( type, handler, false );
}
if ( window.attachEvent ){
return elem.attachEvent( 'on' + type, handler );
}
};
这个函数的缺点是,当它每次被调用的时候都会执行里面的if条件分支。
下面这个函数虽然仍然有一些分支判断,但是在第一次进入条件分支之后,在函数内部就会重写这个函数,重写之后的函数就是我们希望的addEvent函数。
var addEvent = function(ele,type,handler){
if(window.addEventListener){
addEvent = function(ele,type,handler){
elem.addEventListener( type, handler, false );
}
}
if(window.attachEvent){
addEvent = function(ele,type,handler){
elem.attachEvent( 'on' + type, handler );
}
}
addEvent(ele,type,handler);
}