1.常規(guī)
var addEvent=function(elem,type,handler){
if(window.addEventListener){
return elem.addEventListener(type,handler,false);
}
if(window.attachEvent){
return elem.attachEvent('on'+type,handler)
}
}
缺點:每次調(diào)用都會執(zhí)行條件判斷,可避免
2.改進,只在加載時做判斷
var addEvent=(function(){
if(window.addEventListener){
return function(elem,type,handler){
elem.addEventListener(type,handler,false);
}
}
if(window.attachEvent){
return function(elem,type,handler){
elem.attachEvent('on'+type,handler);
}
}
})();
缺點:雖避免了判斷,但如果從未使用過addEvent函數(shù),那么第一次瀏覽器嗅探成為多余
3.惰性載入,重寫函數(shù)
var addEvent=function(elem,type,handler){
if(window.addEventListener){
addEvenr=function(elem,type,hander){
elem.addEventListenr(type,handler,false)
}
}
else if(window.attachEvent){
addEvent=function(elem,type,handler){
elem.attachEvent('on'+type,handler);
}
}
addEvent(elem,type,handler);
};