javascript事件處理函式繫結簡單介紹
本章節介紹一下javascript關於事件處理函式註冊的一些事情,希望能夠給需要的朋友帶來幫助。
一.寫在html標籤中:
此種方式在當前還是有大量使用的,雖然不推薦使用此方式,因為比較簡單方方便,關於它的缺點最後介紹。
程式碼如下:
[HTML] 純文字檢視 複製程式碼<input type="button" value="檢視效果"/>
當點選此按鈕的時候就會執行函式func()。
主要缺點如下:
1.無法對一個事件註冊多個事件處理函式,前面的會被後面的覆蓋。
2.是一種過時的註冊事件處理函式方式,不推薦使用。
二.當前推薦的事件處理函式註冊:
當前W3C標準中是使用addEventListener()和removeEventListener()函式註冊和刪除事件處理函式,當前的IE8以上瀏覽器和火狐、谷歌等標準瀏覽器都支援,但IE8和IE8以下瀏覽器不支援這兩個函式,要使用attachEvent()和detachEvent()函式實現註冊和刪除功能。
程式碼封裝如下:
[JavaScript] 純文字檢視 複製程式碼function addEvent(obj,type,fn){ if(typeof obj.addEventListener != 'undefined'){ obj.addEventListener(type,fn,false); } else if(obj.attachEvent != 'undefined'){ obj.attachEvent('on' + type,function(){ fn.call(obj,window.event); }); } };
下面對程式碼需要注意的幾點做一下說明:
1.addEventListener函式的時候事件名稱不需要加"on",而attachEvent則需要加"on"。
2.之所以使用call這是因為attachEvent()函式註冊的事件處理函式中的this並不是指向obj的,而是指向window。上面程式碼的問題:
IE8和IE8以下中,由於註冊的是匿名函式,所以刪除是個問題,同時無法無法按照順序執行事件處理函式。
解決方案:
1.新增是使用javascript的雜湊表儲存物件事件,為每一個物件事件分配一個ID值,按新增的呼叫順序,先判斷是否存在相同的處理函式,不存在的話就依次將事件繫結函式新增到雜湊表中,這樣解決了無法順序執行以及重複新增的問題
2.刪除時進行遍歷函式匹配的判斷,存在則刪除。
上面的解決方案是針對IE8和IE8以下瀏覽器的。
相關文章
- javascript事件處理函式迴圈批量繫結簡單介紹JavaScript事件函式
- javascript刪除註冊的事件處理函式簡單介紹JavaScript事件函式
- echarts 繫結事件處理函式Echarts事件函式
- 封裝javascript事件處理函式繫結和解綁程式碼封裝JavaScript事件函式
- javascript匿名函式簡單介紹JavaScript函式
- javascript call()函式用法簡單介紹JavaScript函式
- javascript trim()函式用法簡單介紹JavaScript函式
- javascript高階函式簡單介紹JavaScript函式
- javascript函式呼叫方式簡單介紹JavaScript函式
- js dom元素事件處理簡單介紹JS事件
- javascript定時器函式簡單介紹JavaScript定時器函式
- javascript呼叫函式的方式簡單介紹JavaScript函式
- javascript匿名函式的使用簡單介紹JavaScript函式
- javascript匿名函式的優點簡單介紹JavaScript函式
- JavaScript 註冊事件處理函式JavaScript事件函式
- javascript函式和變數宣告提前簡單介紹JavaScript函式變數
- javascript函式宣告兩種主要方式簡單介紹JavaScript函式
- javascript陣列的map()函式用法簡單介紹JavaScript陣列函式
- javascript建構函式的繼承簡單介紹JavaScript函式繼承
- javascript非建構函式繼承簡單介紹JavaScript函式繼承
- javascript封裝相容所有瀏覽器的繫結和刪除事件處理函式JavaScript封裝瀏覽器事件函式
- JavaScript 批量註冊事件處理函式JavaScript事件函式
- JavaScript函式繫結JavaScript函式
- js如何給繫結的事件處理函式傳遞引數JS事件函式
- javascript鏈式呼叫簡單介紹JavaScript
- 函式表示式和函式宣告簡單介紹函式
- javascript函式讀取變數作用域簡單介紹JavaScript函式變數
- javascript事件控制程式碼簡單介紹JavaScript事件
- match函式簡單介紹以及與index函式結合應用函式Index
- 跨瀏覽器的事件處理函式繫結刪除封裝瀏覽器事件函式封裝
- JavaScript 事件處理函式傳遞引數JavaScript事件函式
- getFullYear()函式用法簡單介紹函式
- document.close()函式簡單介紹函式
- js isPrototypeOf()函式用法簡單介紹JS函式
- jQuery建構函式簡單介紹jQuery函式
- JavaScript 簡單介紹JavaScript
- javascript什麼是事件委託簡單介紹JavaScript事件
- 函式式 JavaScript 簡介函式JavaScript