javascript實現的對相容各個瀏覽器事件封裝
可能題目沒有說清楚,這裡所謂的對事件封裝指的是實現相容各個瀏覽器的事件處理函式的註冊和刪除效果。
之所以進行相容處理,主要是因為低版本的IE瀏覽器存在相容性問題,對w3c標準的事件處理方式不支援,但是當前使用者又較多。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #antzone{ width:200px; height:100px; background-color:green; } </style> <script type="text/javascript"> function addEvent(elem, eventName, handler) { if (elem.attachEvent) { elem.attachEvent("on" + eventName, function(){ handler.call(elem) }); //此處使用回撥函式call(),讓this指向elem } else if (elem.addEventListener) { elem.addEventListener(eventName, handler, false); } } function removeEvent(elem, eventName, handler) { if (elem.detachEvent) { elem.detachEvent("on" + eventName, function(){ handler.call(elem) }); //此處使用回撥函式call(),讓this指向elem } else if (elem.removeEventListener) { elem.removeEventListener(eventName, handler, false); } } window.onload=function(){ var odiv=document.getElementById("antzone"); var oadd=document.getElementById("add"); var odel=document.getElementById("del"); function handler(){ this.style.backgroundColor="red"; } oadd.onclick=function(){ addEvent(odiv,"click",handler); } odel.onclick=function(){ removeEvent(odiv,"click",handler); } } </script> </head> <body> <div id="antzone"></div> <input type="button" id="add" value="註冊事件處理函式"/> <input type="button" id="del" value="刪除事件處理函式"/> </body> </html>
上面的程式碼實現了相容效果,下面介紹一下它的實現過程。
一.程式碼註釋:
1.function addEvent(elem, eventName, handler) {},此函式實現了事件處理函式的註冊功能,第一個引數是要註冊事件處理函式的元素物件,第二個引數是事件處理函式的名稱,需要注意的是,前面不要加"on",第三個引數是事件處理函式物件。
2.if (elem.attachEvent) {
elem.attachEvent("on" + eventName, function(){
handler.call(elem)
});
},如果支援elem.attachEvent的話,那麼我們可以認為它是低版本的IE瀏覽器(可能谷歌瀏覽器也支援,感興趣的朋友自行做一下測試),然後再使用attachEvent()函式祖冊事件處理函式。[
3.else if (elem.addEventListener) {
elem.addEventListener(eventName, handler, false);
},否則使用w3c標準的方式註冊事件處理函式。
二.相關閱讀:
1.attachEvent()函式可以參閱addEventListener()和attachEvent()一章節。
相關文章
- js相容各個瀏覽器的事件物件JS瀏覽器事件物件
- javascript實現的相容各個瀏覽器的註冊和刪除事件程式碼JavaScript瀏覽器事件
- 相容所有瀏覽器的阻止事件冒泡封裝瀏覽器事件封裝
- javascript相容各個瀏覽器的獲取事件源物件程式碼JavaScript瀏覽器事件物件
- javascript封裝相容所有瀏覽器的繫結和刪除事件處理函式JavaScript封裝瀏覽器事件函式
- javascript相容低版本IE瀏覽器的事件物件JavaScript瀏覽器事件物件
- 相容各主瀏覽器透明的CSS瀏覽器CSS
- css文字兩端對齊效果相容各瀏覽器CSS瀏覽器
- CSS實現背景透明,文字不透明(相容各瀏覽器)CSS瀏覽器
- javascript相容火狐等各瀏覽器的innerText屬性程式碼JavaScript瀏覽器
- js實現的相容所有瀏覽器的滑鼠中鍵滾動事件JS瀏覽器事件
- JavaScript瀏覽器事件物件JavaScript瀏覽器事件物件
- JavaScript 瀏覽器事件解析JavaScript瀏覽器事件
- 相容各個瀏覽器的scrolltop屬性簡單介紹瀏覽器
- 相容所有瀏覽器的DOMContentLoaded事件瀏覽器事件
- js中css樣式相容各個瀏覽器寫法JSCSS瀏覽器
- 相容所有瀏覽器的阻止事件冒泡程式碼瀏覽器事件
- JS相容各個瀏覽器的本地圖片上傳即時預覽效果JS瀏覽器地圖
- IE 瀏覽器各個版本 JavaScript 支援情況一覽表瀏覽器JavaScript
- Javascript和CSS瀏覽器相容總結JavaScriptCSS瀏覽器
- 各瀏覽器對 onbeforeunload 事件的支援與觸發條件實現有差異瀏覽器事件
- 禁止頁面後退JS(相容各瀏覽器)JS瀏覽器
- css針對各個瀏覽器的字首是什麼CSS瀏覽器
- javascript實現的控制瀏覽器全屏效果 [JavaScript瀏覽器
- javascript事件迴圈(瀏覽器/node)JavaScript事件瀏覽器
- 相容IE瀏覽器實現的中文兩端對齊程式碼例項瀏覽器
- js相容所有瀏覽器的事件繫結程式碼JS瀏覽器事件
- 相容所有瀏覽器的阻止事件冒泡js程式碼瀏覽器事件JS
- CSS3常用到的相容各瀏覽器字首分享CSSS3瀏覽器
- js實現的通用相容低版本IE瀏覽器的事件註冊和刪除JS瀏覽器事件
- 關於UC瀏覽器相容scroll事件問題瀏覽器事件
- 阻止瀏覽器冒泡事件,相容firefox和ie瀏覽器事件Firefox
- 跨瀏覽器的事件處理函式繫結刪除封裝瀏覽器事件函式封裝
- 相容所有瀏覽器的對聯廣告程式碼瀏覽器
- 各個瀏覽器對CSS標準各屬性支援的情況列表瀏覽器CSS
- IE瀏覽器相容瀏覽器
- parseInt()瀏覽器相容瀏覽器
- 9:瀏覽器相容瀏覽器