javascript 事件處理常式介紹

來源:互聯網
上載者:User

1、DOM0級事件處理常式
將一個函數值給一個事件處理常式屬性。
例如: 複製代碼 代碼如下:var btn = document.getElementById("myBtn");
btn.onclick = funtion(){
alert(this.id); //"myBtn"
}

刪除事件,btn.onclick = null;
--------------------------------------------------------------------------------
2、DOM2級事件處理常式
先介紹,“DOM2級事件”定義的兩個方法,用於處理指定和刪除事件處理常式的操作:
addEventListener()
removeEventListener()
所有DOM節點都包含這兩個方法,接受3個參數:處理事件名、作為事件處理常式的函數、一個布爾值。
最後的布爾值參數,true:表示在捕獲階段呼叫事件處理常式;false:表示在冒泡階段呼叫事件處理常式。\ 複製代碼 代碼如下:var btn = document.getElementById("myBtn");
btn.addEventListener("click",funciton(){
alert(this.id);
},false);

用DOM2級方法添加事件處理常式主要的好處是可以添加多個事件處理常式。
例如: 複製代碼 代碼如下:var btn = document.getElementById("myBtn");
btn.addEventListener("click",funciton(){
alert(this.id);
},false);
btn.addEventListener("click",funciton(){
alert(“Hello World!”);
},false);

這兩個事件會按照順序觸發。
通過 addEventListener()添加的事件只能用removeEventListener()移除。移除時傳入的參數需與添加時的參數一致,也就是說匿名函數將無法移除。 複製代碼 代碼如下:var btn = document.getElementById("myBtn");
var handler = function(){
alert(this.id);
};
btn.addEventListener("click" , handler , false);
btn.removeEventListener("click", handler , false);

大多數情況下,都是將事件處理常式添加到事件流的冒泡階段,以便相容各種瀏覽器。
firefox、safari、chrome、opera支援DOM2級事件處理常式。
--------------------------------------------------------------------------------
3、IE事件處理常式
IE實現了與DOM中類似的兩個方法:
attachEvent()
detachEvent()
這兩個方法都接受兩個參數:事件處理常式名稱和事件處理常式函數。
由於IE只支援時間冒泡,所以通過attachEvent() 添加的事件處理常式都會被添加到冒泡階段。
例如: 複製代碼 代碼如下:var btn = document.getElementById("myBtn");
btn.attachEvent("onclick" , function(){
alert("Clicked");
})

注意,attachEvent()的第一個參數是“onclick”,而非 “click”。
IE的attachEvent()與DOM0的addEventListener()的主要區別是事件處理常式的範圍。
DOM0級方法,事件處理常式會在所屬元素的範圍內運行;
attachEvent()方法,事件處理常式會在全域範圍中運行,因此 this等於 window。
attachEvent()也可以為一個元素添加多個事件處理常式。 複製代碼 代碼如下:var btn = document.getElementById("myBtn");
btn.attachEvent(”onclick“ , function(){
alert("clicked");
})
btn.attachEvent(”onclick“ , function(){
alert("Hello World!");
})

與DOM方法不同的是,這些事件處理常式不是以添加順序執行,而是以相反的方向執行。
detachEvent() 的用法與removeEventListener()的用法一樣。
--------------------------------------------------------------------------------
4、跨瀏覽器的事件處理常式 複製代碼 代碼如下:var EventUtil = {
addHandler : function(element, type , handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
} else if ( element.attachEvent){
element.attachEvent("on" + type , handler)
} else {
element["on" + type] = handler;
}
},
removeHandler: function( element , type , handler){
if ( element.removeElementListener) {
element.removeElementListener( type , handler , flase);
} else if ( element.detachEvent) {
element.detachEvent ( "on" + type , handler)
} else {
element["on" + type] = handler;
}
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.