在很多語言的學(xué)習(xí)中,“事件”都是一個比較難理解,但是又是一個很重要的概念。javascript中的事件處理也是一樣,正因?yàn)橛辛耸录幚恚艜霈F(xiàn)Ajax拖動的效果。本文就討論一下JavaScript中的事件處理,讀過之后,您就會知道,很多Ajax框架實(shí)現(xiàn)拖動效果的原理了。
一、 IE Event對象
(一)IE Event對象的主要屬性和方法
在IE中有一個專門負(fù)責(zé)事件處理的對象Event,這個對象負(fù)責(zé)對事件的處理,含有很多的屬性和方法,通過這些方法和屬性的調(diào)用,就能完成很多的事件處理。
type:事件的類型,就是HTML標(biāo)簽屬性中,沒有“on”前綴之后的字符串,例如“Click”就代表單擊事件。
srcElement:事件源,就是發(fā)生事件的元素。
button:聲明了被按下的鼠標(biāo)鍵,是一個整數(shù)。1代表鼠標(biāo)左鍵,2代表鼠標(biāo)右鍵,4代表鼠標(biāo)的中間鍵,如果按下了多個鼠標(biāo)鍵,就把這些值加在一起,所以3就代表左右鍵同時按下。
clientX/clientY:是指事件發(fā)生的時候,鼠標(biāo)的橫、縱坐標(biāo),返回的是整數(shù),它們的值是相對于包容窗口的左上角生成的。
offsetX/offsetY:鼠標(biāo)指針相對于源元素的位置,可以確定單擊Image對象的哪個象素。
altKey,ctrlKey,shiftKey:顧名思義,這些屬性是指鼠標(biāo)事件發(fā)生的時候,是否同時按住了Alt、Ctrl或者Shift鍵,返回的是一個布爾值。
keyCode:返回keydown和keyup事件發(fā)生的時候,按鍵的代碼以及keypress事件的Unicode字符。
fromElement、toElement前者是指代mouseover事件移動過的文檔元素,后者指代mouseout事件中鼠標(biāo)移動到的文檔元素。
cancelBubble:一個布爾屬性,把它設(shè)置為true的時候,將停止事件進(jìn)一步起泡到包容層次的元素。
returnValue:一個布爾值屬性,設(shè)置為false的時候可以組織瀏覽器執(zhí)行默認(rèn)的事件動作,相當(dāng)于<a href=”#” onclick=”ProcessMethod();return false;” />。
attachEvent()和detachEvent()方法:為制定DOM對象事件類型注冊多個事件處理函數(shù)的方法,它們有兩個參數(shù),第一個是事件類型,第二個是事件處理函數(shù)。在attachEvent()事件執(zhí)行的時候,this關(guān)鍵字指向的是window對象,而不是發(fā)生事件的那個元素。
(二)IE Event對象的一些說明
1.IE Event對象是一個全局屬性 在IE中,不能把Event對象作為參數(shù)傳遞給事件處理程序,只能用window.event或者event來引用Event對象。因?yàn)樵贗E中,Event是window的一個屬性,也就是說event是一個全局變量,這個變量提供了事件的細(xì)節(jié)。
2.IE中事件的起泡:IE中事件可以沿著包容層次一點(diǎn)點(diǎn)起泡到上層,也就是說,下層的DOM節(jié)點(diǎn)定義的事件處理函數(shù),到了上層的節(jié)點(diǎn)如果還有和下層相同事件類型的事件處理函數(shù),那么上層的事件處理函數(shù)也會執(zhí)行。例如,<div>標(biāo)簽包含了<a>,如果這兩個標(biāo)簽都有onclick事件的處理函數(shù),那么執(zhí)行的情況就是先執(zhí)行<a>標(biāo)簽的onclick事件處理函數(shù),再執(zhí)行<div>的事件處理函數(shù)。如果希望<a>的事件處理函數(shù)執(zhí)行完畢之后,不希望執(zhí)行上層的<div>的onclick的事件處理函數(shù)了,那么就把cancelBubble設(shè)置為false即可。
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 下一頁 IE中拖動DOM元素的例子
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|