JS--事件對(duì)象

在觸發(fā)DOM上的某個(gè)事件時(shí),會(huì)產(chǎn)生一個(gè)事件對(duì)象event,這個(gè)對(duì)象中包含著所有與事件有關(guān)的信息。

DOM中的事件對(duì)象

兼容DOM的瀏覽器會(huì)將一個(gè)event對(duì)象傳入到事件處理程序中,無(wú)論指定事件處理程序時(shí)是DOM0級(jí)事件還是DOM2級(jí)事件,都會(huì)傳入event對(duì)象。

var btn = document.getElementById('btn')
btn.onclick = function(event){
  console.log(event.type) //'click'
}

btn.addEventListener('click', function(event){
  console.log(event.type)  // 'click'
},false)

event對(duì)象包含與創(chuàng)建它的特定的事件有關(guān)的屬性和方法,觸發(fā)的事件類(lèi)類(lèi)型不一樣,可以使用的事件對(duì)象上的屬性和方法也不一樣。不過(guò)所有事件都會(huì)有一下列出的成員“

屬性/方法 類(lèi)型 讀寫(xiě) 說(shuō)明
bubbles boolean 只讀 表明事件是否冒泡
cancleable boolean 只讀 表明是否可以取消事件的默認(rèn)行為
currentTarget Element 只讀 表明事件處理程序當(dāng)前正在處理事件的那個(gè)元素
defaultPrevented boolean 只讀 為true表明調(diào)用了preventDefault()(DOM3級(jí)事件新增)
detail Integer 只讀 表明與事件相關(guān)的細(xì)節(jié)信息
eventPhase Integer 只讀 調(diào)用事件處理程序的階段:1、捕獲階段;2、處于目標(biāo)階段;3、冒泡階段
preventDefault() Function 只讀 取消事件的默認(rèn)行為,如果cancelable 為true,則可以使用該方法
stopImmediatePropagation() Function 只讀 取消事件的進(jìn)一步捕獲或冒泡,同時(shí)阻止任何事件處理程序被調(diào)用(DOM3級(jí)新增)
stopPropagation() Function 只讀 取消事件的進(jìn)一步捕獲或冒泡,如果bubbles為true的話(huà)可以使用這個(gè)方法
target Element 只讀 事件的目標(biāo),currentTarge表示當(dāng)前的事件階段的目標(biāo)
type String 只讀 事件觸發(fā)的類(lèi)型
view AbstractView 只讀 與事件有關(guān)聯(lián)的抽象視圖,等同于發(fā)生事件的window對(duì)象

在事件處理程序內(nèi)部,對(duì)象this始終等同于currentTarget的值,而target則是包含事件的實(shí)際目標(biāo),如果將事件處理程序制定給了目標(biāo)元素,則this,currentTarge,target包含的是相同的值。

注意:當(dāng)事件處理程序執(zhí)行完后,事件對(duì)象會(huì)被銷(xiāo)毀。

  • IE中的事件對(duì)象
    在IE中訪(fǎng)問(wèn)事件對(duì)象的幾種不同方式,取決于綁定事件處理程序的方式。在DOM0級(jí)方法添加事件處理程序時(shí),event對(duì)象作為window對(duì)象的屬性存在。
var btn = document.getElementById('btn')

btn.onclick = function() {
  var event  = window.event
  console.log(event.type)
}

如果事件處理程序是使用attachEvent()方法添加的沒(méi)那么就會(huì)有一個(gè)event對(duì)象作為參數(shù)傳到事件處理程序的函數(shù)參數(shù)列表中。

var btn = document.getElementById('btn')

btn.attachEvent('click', function(event){
  console.log(event.type)
}, false)

在IE的所有事件對(duì)象都會(huì)包含以下屬性和方法:

屬性/方法 類(lèi)型 讀寫(xiě) 說(shuō)明
cancelBubble boolean 讀寫(xiě) 默認(rèn)值為false,但將其設(shè)置為true可以取消事件冒泡,和stopPropagation()一樣
returnValue boolean 讀寫(xiě) 默認(rèn)為true,設(shè)置為false就可以取消事件的默認(rèn)行為,和preventDefault()作用一樣
scrElement Element 只讀 事件目標(biāo),和target一樣
type string 只讀 表示觸發(fā)的事件類(lèi)型
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在觸發(fā)DOM上的某個(gè)事件時(shí),會(huì)產(chǎn)生一個(gè)事件對(duì)象event。這個(gè)對(duì)象中包含著所有與事件有關(guān)的信息。包括導(dǎo)致事件的元素...
    Miss____Du閱讀 5,175評(píng)論 0 7
  • 事件對(duì)象 在觸發(fā)DOM上的某個(gè)事件時(shí),會(huì)產(chǎn)生一個(gè)事件對(duì)象event,這個(gè)對(duì)象中包含著所有與事件有關(guān)的信息。包括導(dǎo)致...
    落花的季節(jié)閱讀 241評(píng)論 0 1
  • 聲明:本文來(lái)源于http://www.webzsky.com/?p=731我只是在這里作為自己的學(xué)習(xí)筆記整理一下(...
    angryyan閱讀 7,242評(píng)論 1 6
  • 事件流: 事件流:頁(yè)面接收事件的順序。 IE定義的:事件冒泡流(由最具體的元素依次傳播到DOM樹(shù)的最上層的Docu...
    xiaoguo16閱讀 659評(píng)論 0 0
  • 概念 當(dāng)某個(gè)對(duì)象觸發(fā)了某種事件時(shí),所發(fā)生的一切詳細(xì)信息保存在一個(gè)臨時(shí)的地方,這個(gè)地方叫做事件對(duì)象(黑匣子) 獲取事...
    哪樹(shù)繁花閱讀 377評(píng)論 0 0

友情鏈接更多精彩內(nèi)容