javascript如何移除註冊的事件處理函式

admin發表於2017-03-09

如果想要一個元素對一個動作有所相應,那麼就要註冊事件處理函式,這個大家自然都非常的清除,我們們一般都將如何給一個物件註冊事件處理函式,而往往忽略瞭如何移除已經註冊的事件處理函式。

關於如何註冊事件處理函式可以參閱javascript如何註冊事件處理函式一章節,這裡就不多介紹了,在此章節中也介紹瞭如何刪除事件處理函式,不過文章比較繁雜,下面就單獨剝離出來介紹一下。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
function removeEvents(target, type, func){ 
  if(target.removeEventListener) { 
     target.removeEventListener(type, func, false); 
  }
  else if(target.detachEvent) {
     target.detachEvent("on" + type, func); 
  }
  else{ 
     target["on" + type]=null; 
  }
}

以上程式碼是一個可以相容各個瀏覽器的刪除事件處理函式的一個函式,下面進行一下注釋:

1.function removeEvents(target, type, func),此函式具有三個引數,target是要移除事件處理函式的物件,type是事件型別,func是要移除的事件處理函式。

2.if(target.removeEventListener),判斷是否支援removeEventListener函式,主要是用判斷是否是IE8以上或者其他標準瀏覽器。

3.target.removeEventListener(type, func, false),移除註冊的事件處理函式。

4.else if(target.detachEvent) ,判斷是否支援detachEvent()函式,用來相容IE8和IE8以下瀏覽器。

5.target.detachEvent("on" + type, func),用來移除事件處理函式,之所以前面要加on,是因為在IE8和IE8以下瀏覽器中事件型別前面要帶on。

6.最後的這個else可以忽略了現在。

相關文章