在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); }