在觸發dom上的某個時間是,會產生乙個事件物件event,這個物件中包含著所有與時間有關的資訊。包括導致事件的元素、事件的型別一急其他與特定事件相關的資訊。例如,滑鼠操作導致的事件物件中,會包含滑鼠位置的資訊,而鍵盤操作導致的事件物件中,會包含於按下的鍵有關的資訊。
在dom上,有兩種方法對事件物件進行處理。乙個是位於dom0級別的,乙個則是位於dom2級別的。下面我來詳細闡明一下。
1、位於dom 0 級別的事件物件處理。
每個元素都有自己的事件處理程式屬性,這些屬性通常全部小寫,例如onclick。可以通過直接設定屬性來獲得所需的操作。
ex.:
var btn = document.getelementbyid("mybtn");
btn.onclick = function() ;
如此便可設定元素的事件物件。
2、位於dom 2級別的事件物件處理。(ie9、firefox、safari、chrome和opera支援。)
「dom 2級事件」定義了兩個方法,用於處理指定和刪除時間處理程式的操作:addeventlistener()和removeeventlistener()。所有dom節點中都包含這兩個方法,並且他們都接受3個引數:要處理的時間名、作為事件處理程式的函式和乙個布林值。
ex.:
var btn = document.getelementbyid("mybtn");
btn.addeventlistener("click", function() , false);
3、ie事件處理程式。
ie實現了與dom中類似的兩個方法:attachevent()和detachevent().這兩個方法接受相同的兩個引數:事件處理程式名稱與事件處理程式函式。
ex.:
var btn = document.getelementbyid("mybtn");
btn.attachevent("onclick", function());
4、實現跨瀏覽器的事件處理程式。
在下面**中,對瀏覽器進行了能力檢測,通過針對不同的瀏覽器設定不同的方法來達到相同的處理。
var eventutil = else if (element.attachevent) else
},removehandler: function(element, type, handler) else if (element.detachevent) else
}
};
5、注意事項。
在js中,事件流包括三個部分:(1)事件捕獲階段;(2)處於目標階段;(3)事件冒泡階段。
在我經過仔細研究後得出,之所以js中會給出兩個級別的dom事件處理程式,主要是因為:
dom 0級針對的是事件流中的「處於目標」階段 和 事件冒泡階段。(通過設定觸發處理來達到目的)
dom 2級針對的是事件流中的事件捕獲階段。(通過設定***來達到目的)
可以從下面的**中看出端倪。
JS中的DOM事件
1.html事件處理程式 html事件缺點 html和js 緊密的耦合在一起,js 個html都需要進行修改。2.dom0級事件處理程式 較傳統的方式 把乙個函式賦值給乙個事件的處理程式屬性用的比較多的方法,簡單,跨瀏覽器的優勢 沒有html事件處理程式的缺點。3.dom2級事件處理程式 dom2級...
DOM 中的事件處理
根據 w3c dom 2 events 描述,eventtarget 介面被所有支援 dom 事件模型的節點 node 實現。該介面提供了 addeventlistener 和 removeeventlistener 方法,用來繫結或解綁乙個 eventlisteners 介面到乙個 eventta...
歸納DOM事件中各種阻止方法
在複習事件這塊的時候,發現了乙個問題,網上很多文章對事件阻止這塊解析的並不全面,並且有些文章也有錯誤之處,於是想自己總結一下,也方便自己的複習。在看本篇文章之前,需要了解事件的冒泡和捕獲,這裡簡單介紹下 事件冒泡 即事件開始時由最具體的元素 文件中巢狀層數最深的那個點 接收,然後逐級向上傳播到較為不...