国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

DOM事件

stormjun / 2836人閱讀

摘要:與之間的交互是通過事件實現的。而,則將事件一直冒泡到對象。事件處理程序的名字以開頭,例如。級事件處理程序通過指定事件處理程序的傳統方式,就是將一個函數賦值給一個事件處理程序屬性。變動事件在結構發生變化時觸發,比如插入或者刪除節點。

javascript與HTML之間的交互是通過事件實現的。事件就是文檔或者瀏覽器中發生的一些特定的交互瞬間。

事件流

事件流描述的是頁面接受事件的順序,而IE和Netscape的瀏覽器開發團隊提出了兩種截然不同的,甚至是完全相反的事件流概念。IE的事件流是事件冒泡,而Netscape的事件流是事件捕獲。

事件冒泡

即事件開始時又最具體的元素接受,然后逐級向上傳播,現代的所有瀏覽器都支持事件冒泡,但是在具體實現上還是有些差別的,IE5.5及更早的版本中事件冒泡會跳過元素(從直接到document)。而IE9, Firefox,Chrome,Safari則將事件一直冒泡到window對象。

事件捕獲

事件捕獲的用意在于事件到達預定目標之前就捕獲它,在事件捕獲過程中,document對象先接受到click事件,然后事件沿著DOM樹依次向下,一直傳播到事件的具體目標。

DOM事件流

DOM2級事件(關于Dom0 Dom2 Dom3請參考這里)規定的事件流包括三個階段:事件捕獲階段,處于目標階段,和事件冒泡階段。在Dom事件流中,實際的目標元素在捕獲階段是不會接受事件的,這意味著在捕獲階段,事件從document到再到后就停止了。下一個階段是“處于目標”階段,于是事件在

上發生,并在事件處理中被看成冒泡階段的一部分。然后冒泡階段發生,事件又傳播回文檔。

事件處理程序

事件就是用戶或者瀏覽器執行的某個動作,例如click,load,mouseover都是事件的名字。而相應某個事件的函數叫做事件處理程序。事件處理程序的名字以on開頭,例如onclick,onload。

HTML事件處理程序

每個元素支持的每種事件,都可以使用一個與響應事件處理程序同名的HTML特性來制定,這個特性的值應該是能夠執行的HTML代碼。

Dom0級事件處理程序

通過JavaScript指定事件處理程序的傳統方式,就是將一個函數賦值給一個事件處理程序屬性。

var btn = document.getElementById("btn")
btn.onclick = function() {
    alert("clicked")
}

使用Dom0級事件處理程序被認為是元素的方法,此時程序中的this會引用當前元素。同時以這種方式添加的事件處理程序會在冒泡階段被處理。

Dom2級事件處理程序

Dom2級事件定義了兩個方法,addEventListener()和removeEventListener(),所有的Dom節點中都包含著兩個方法,它們都是接受三個參數,要處理的事件名,事件處理函數,和一個布爾值(為true的時候表示在捕獲階段調用事件處理程序,false表示在冒泡階段調用事件處理程序)

var btn = document.getElementById("btn")
btn.addEventListener("click", function(){
    alert(this.value)    
}, false)
IE事件處理程序

IE中實現了與DOM中類似的兩個方法,attachEvent()和detachEvent()。這兩個方法接受相同的參數,事件處理程序名稱,事件處理程序函數,由于在IE8以前不支持事件冒泡,所以事件處理程序函數會在冒泡階段執行。

var btn = document.getElementById("btn")
btn.attachEvent("ocClick", function() {
    alert("clicked")
})

此時在事件處理程序函數會在全局作用域中執行,也就是說此事的this是window。
同時如果為同一個元素同時添加了兩個不同的事件處理程序,這些事件處理程序并不是順序執行的而是以相反的順序被觸發。

事件對象event

在觸發Dom上的某個事件的時候,會產生一個事件對象event,這個對象包含著與事件有關的信息。

Dom事件對象

兼容Dom的瀏覽器會將一個event對象傳到事件處理程序中。

var btn = document.getElementById("btn")
btn.onclick = function(event) {
    alert(event.type)
}

當我們想要阻止某個事件的特定行為時可以使用event對象的preventDefault()方法,而stopPropagation()方法則用于立即停止事件在DOM中的傳播,即取消進一步的事件冒泡或者捕獲。

IE中的事件對象

要訪問IE中的event對象有幾種不同的方式,在使用DOM0級方法添加事件處理程序時,event對象作為window對像的一個屬性存在。

var btn = document.getElementById("btn")
btn.onclick = function() {
    var event = window.event
    alert(event.type)
}

但是當我們用attachEvent的方式添加的,此時的event對象會被當作一個參數傳入事件處理程序中。當時此時也可以通過window對象來訪問event對象。
在event對象中有一個srcElement屬性,指向事件的目標對象,因為事件的處理程序的作用域是根據指定它的方式來確定的,所以this并不總是等于目標對象。此時為了保險起見,建議使用srcElement

btn.onclick = function() {
    alert(window.event.srcElement) === this; //ture
}
btn.attachEvent("onclick", function(event) {
    alert(event.srcElement === this); //false
})
事件類型

Web瀏覽器中可能發生的事件類型有很多,不同的事件類型可能具有不同的信息。而DOM3級事件規定了一下幾類事件。

UI事件
UI事件指的是那些不一定與用戶操作有關的事件。比如load事件,當頁面完全加載后在window上面觸發,當圖片加載完畢在元素上觸發。以及腳本加載完畢在

閱讀需要支付1元查看
<