JavaScript Event 對象
■知識點
event對象由系統(tǒng)自動創(chuàng)建,其屬性提供了有關(guān)事件的細(xì)節(jié)信息,其方法可以控制事件的傳播。在DOM事件模型中,event對象被傳遞給事件監(jiān)聽函數(shù),但是在IE事件模型中,它被存儲在window對象的event屬性中。
下面列出了二級DOM事件標(biāo)準(zhǔn)定義的event對象屬性,如表所示。注意,這些屬性都是只讀屬性。
cancelable | 返回布爾值,指示事件是否可以取消的默認(rèn)動作。如果使用preventDefaultO方法可以取消與 事件關(guān)聯(lián)的默認(rèn)動作,則返回值為true,否則為fasle |
currentTarget | 返回觸發(fā)事件的當(dāng)前節(jié)點,即當(dāng)前處理該事件的元素、文檔或窗口。在捕獲和冒泡階段,該 屬性是非常有用的,因為在這兩個階段,它不同于target屬性 |
eventPhase | 返回事件傳播的當(dāng)前階段,包括捕獲階段(1)、目標(biāo)事件階段(2)和冒泡階段(3) |
target | 返回事件的目標(biāo)節(jié)點(觸發(fā)該事件的節(jié)點),如生成事件的元素、文檔或窗口 |
timeStamp | 返回事件生成的日期和時間 |
type | 返回當(dāng)前event對象表示的事件的名稱。如"submit” "load" "click" |
下面列出了二級DOM事件標(biāo)準(zhǔn)定義的event對象方法,如表所示,IE事件模型不支持這些方法。
方 法 | 說 明 |
initEventO | 初始化新創(chuàng)建的event對象的屬性 |
preventDefault() | 通知瀏覽器不要執(zhí)行與事件關(guān)聯(lián)的默認(rèn)動作 |
stopPropagationQ | 終止事件在傳播過程的捕獲、目標(biāo)處理或冒泡階段進(jìn)一步傳播。調(diào)用該方法后,該節(jié)點上處 理該事件的處理函數(shù)將被調(diào)用,但事件不再被分派到其他節(jié)點 |
IE7及其早期版本,以及IE怪異模式不支持標(biāo)準(zhǔn)的DOM事件模型,并且IE的event對象定義了一 組完全不同的屬性,如表所示。
屬 性 | 描 述 |
cancelBubble | 如果想在事件監(jiān)聽函數(shù)中阻止事件傳播到上級包含對象,必須把該屬性設(shè)為true |
fromElement | 對于mouseover和mouseout事件,fromElement引用移出光標(biāo)的元素 |
keyCode | 對于keypress事件,該屬性聲明了被敲擊的鍵生成的Unicode字符碼。對于keydown和keyup 事件,它指定了被敲擊的鍵的虛擬鍵盤碼。虛擬鍵盤碼可能和使用的鍵盤的布局相關(guān) |
offsetX、offsetY | 發(fā)生事件的地點在事件源元素的坐標(biāo)系統(tǒng)中的x坐標(biāo)和y坐標(biāo) |
retumValue | 如果設(shè)置了該屬性,它的值比事件監(jiān)聽函數(shù)的返回值優(yōu)先級髙。把這個屬性設(shè)置為fasle,可 以取消發(fā)生事件的源元素的默認(rèn)動作 |
srcElement | 對于生成事件的window對象、document對象或element對象的引用 |
toElement | 對于mouseover和mouseout事件,該屬性引用移入光標(biāo)的元素 |
y | 事件發(fā)生的位置的x坐標(biāo)和y坐標(biāo),它們相對于用CSS定位的最內(nèi)層包含元素 |
為了兼容IE和DOM兩種事件模型,可以使用下面的表達(dá)式進(jìn)行兼容。
var event = event || window.event; //兼容不同模型的 event 對象
上面代碼右側(cè)是一個選擇運算表達(dá)式,如果事件監(jiān)聽函數(shù)存在event實參,則使用event形參來傳遞事件信息,如果不存在event參數(shù),則調(diào)用window對象的event屬性來獲取事件信息。把上面的表達(dá)式放在事件監(jiān)聽函數(shù)中即可進(jìn)行兼容。
點擊加載更多評論>>