代碼如下:
//非延遲加載的函數(shù),每次調(diào)用都會進行條件判斷
function removeHandler(target,eventType,handler) {
if(target.removeEventListener) {
target.removeEventListener(eventType,handler,false);
}else {
target.detachEvent("on"+eventType,handler);
}
}
//延遲加載的函數(shù),第一次調(diào)用后,會覆蓋原來的老函數(shù),以后再次調(diào)用的是新函數(shù),不會再進行條件的判斷,提升效率
function addHandler(target,eventType,handler) {
if(target.addEventListener) {
addHandler = function(target,eventType,handler){
target.addEventListener(eventType,handler,false);
}
}else{
addHandler = function(target,eventType,handler){
target.attachEvent("on"+eventType,handler);
}
}
addHandler(target,eventType,handler);
}
//條件預加載
//條件預加載確保所有函數(shù)調(diào)用時間相同。其代價是在腳本加載時進行檢測。預加載適用于一個函數(shù)馬上就會被用到,而且在整個頁面生命周期中經(jīng)常使用的場合。
var addEventHandler = document.body.addEventListener ? function(target,eventType,handler) {
target.addEventListener(eventType,handler,false);
} : function(target,eventType,handler) {
target.attachEvent("on"+eventType,handler);
}