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