1热押、兼容性
(1)語法(syntax): addEventListener(type, handler, useCapture)
type:事件類型
handler:事件處理函數(shù)
useCapture:是否在捕獲階段觸發(fā)
兼容支持:ie9 以上主流瀏覽器。
(2) 語法(syntax):attachEvent("on" + type, hander )
type:事件類型
handler:事件處理函數(shù)
兼容支持:ie6-10。
2笨腥、初級封裝
function ?registerEvent(ele,type,handler){
? ? ? ? if(ele.addEventListener){
? ? ? ? ? ? ? ele.addEventListener(type,handler,false);
? ? ? ? }else if(ele.attachEvent){
? ? ? ? ? ? ? ele.attachEvent("on"+type,handler);
? ? ? ? }else{
? ? ? ? ? ? ? ele["on"+type]=handler;
? ? ? ? }
}
缺點:同一個頁面里有多次注冊事件存筏,而每次調(diào)用都要判斷一次瀏覽器的支持環(huán)境园骆,浪費資源!
3司倚、中級封裝
function ?createRegister(){
? ? ? if(window.addEventListener){
? ? ? ? ? ? ?return function(ele,type,handler){
? ? ? ? ? ? ? ? ? ? ?ele.addEventListener(type,handler,false);
? ? ? ? ? ? ?}
? ? ? ?}else if(window.attachEvent){
? ? ? ? ? ? ?return function(ele,type,handler){
? ? ? ? ? ? ? ? ? ? ele.attachEvent("on"+type,handler);
? ? ? ? ? ? ?}
? ? ? ? }else{
? ? ? ? ? ? ? ?return function(ele,type,handler){
? ? ? ? ? ? ? ? ? ? ? ?ele["on"+type]=handler;
? ? ? ? ? ? ? ?}
? ? ? ?}
}
優(yōu)點:調(diào)用craeteRegister函數(shù),并不是在注冊事件篓像,而是獲取一個當前瀏覽器支持的注冊事件的方式? ??
?var? eventRegister? =? createRegister();
缺點:(1).事件對象的獲取动知,要處理;
? ? ? ? ? ?(2). this的指向問題员辩,也要處理盒粮。
3、高級封裝
function? createRegister(){
? ? ? ? ?if(window.addEventListener){
? ? ? ? ? ? ? ? ?return function(ele,type,handler){
? ? ? ? ? ? ? ? ? ? ? ?ele.addEventListener(type,handler,false);
? ? ? ? ? ? ? ? ?}
? ? ? ? ?}else if(window.attachEvent){
? ? ? ? ? ? ? ? return function(ele,type,handler){
? ? ? ? ? ? ? ? ? ? ? ? ele.attachEvent("on"+type,function(){
//使用一個中間函數(shù)奠滑,這樣子就可以自己控制調(diào)用了丹皱,call方法將this指向我們需要的ele.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?handler.call(ele,window.event);
? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? }
? ? ? ? ?}else{
? ? ? ? ? ? ? ? ?return function(ele,type,handler){
? ? ? ? ? ? ? ? ? ? ? ?ele["on"+type]=handler;
? ? ? ? ? ? ? ? ?}
? ? ? ? ? }
}
優(yōu)點:(1)、使用我們封裝好的eventRegister這個函數(shù)的時候养叛,不再需要考慮瀏覽器的兼容性問題种呐。
(2)、用一種統(tǒng)一的方式弃甥,就能夠獲取到事件對象爽室,以及當前點擊的元素對象。
總結(jié):第一次寫簡書,好不習慣啊阔墩,求教怎么在上面寫出開發(fā)者工具的代碼嘿架,寫的好了啊啸箫!奔潰耸彪!
謝謝,望大神指教忘苛!