js 事件

事件流介紹

事件流描述了頁(yè)面接受事件的順序。事件流定義了事件冒泡和事件捕獲。
事件冒泡是指事件從最具體的元素開始接觸,然后向上傳播至沒(méi)有那么具體的元素(文檔)
事件捕獲的目的是為了在事件最終達(dá)到最終目標(biāo)前進(jìn)行攔截。事件捕獲實(shí)際上是指從沒(méi)有那么具體的元素到最后具體的元素的過(guò)程墅冷。瀏覽器一般是從window對(duì)象開始

DOM事件流

DOM2EVENTS規(guī)范規(guī)定事件流分為三個(gè)節(jié)點(diǎn):事件捕獲,到達(dá)目標(biāo)或油,事件冒泡

DOM0事件處理流程

在JavaScript中指定事件處理程序的傳統(tǒng)方式是把一個(gè)函數(shù)賦值給(dom元素)一個(gè)事件處理程序?qū)傩阅蕖C總€(gè)元素都有事件處理程序?qū)傩裕热鏾nclick.

let btn = document.getElementById("btn")
btn.onClick= function(){
console.log(this)
}

注意:上述函數(shù)方法中的this指向的是元素本身顶岸,即Button元素腔彰。

DOM1處理事件程序

DOM2 Event為事件處理程序的賦值和移除提供了兩個(gè)方法 addEventListener removeListener叫编。這兩個(gè)方法暴露在DOM節(jié)點(diǎn)上面。他們接受三個(gè)參數(shù)霹抛,事件名稱搓逾,事件處理函數(shù)和一個(gè)布爾值。當(dāng)布爾值為true的時(shí)候杯拐,代表事件的觸發(fā)會(huì)出現(xiàn)在捕獲階段霞篡,布爾值為false,表示事件的觸發(fā)生在冒泡階段。addEventListener和removeListener 的處理事件函數(shù)樣式必須一樣才能達(dá)到移除效果藕施,如果addEventListener添加多次寇损,那么事件處理函數(shù)也會(huì)觸發(fā)多次。
注意:為了讓事件能夠回收裳食。當(dāng)事件所在的元素已經(jīng)刪除,最好把事件也設(shè)置為null

事件對(duì)象

在DOM合規(guī)的瀏覽器中芙沥,event對(duì)象是傳給事件處理程序的唯一參數(shù)诲祸。不管是使用何種方式處理,都會(huì)傳入event事件對(duì)象而昨。事件對(duì)象的屬性有以下救氯。

bubbless:事件是否冒泡
cacelable:表示是否可以取消事件的默認(rèn)行為
currentTarget:當(dāng)前事件處理所在的元素
defaultPrevented:true表示已經(jīng)調(diào)用preventDefault方法(表示取消某些元素的特定行為,比如a標(biāo)簽的跳轉(zhuǎn))
detail:事件相關(guān)屬性歌憨,比如單機(jī)兩次着憨,detail會(huì)變成2,光標(biāo)出去了會(huì)自動(dòng)變?yōu)?
eventPhase:表示調(diào)用事件處理程序的階段 1代表捕獲階段 2代表到達(dá)目標(biāo) 3代表冒泡階段
preventDefault():用于取消事件的默認(rèn)行為 cancelable為true才能調(diào)用這個(gè)方法
stopImmediatePropagation:取消所有后續(xù)事件捕獲或者事件冒泡务嫡,并阻止調(diào)用人格后續(xù)的事件
stopPropagation:取消所有后續(xù)事件捕獲或者事件冒泡甲抖,只有bubbles為true才可以調(diào)用
target:事件的目標(biāo)
type:代表事件的類型

事件類型

事件可以分為以下幾種類型

用戶界面事件
焦點(diǎn)事件
鼠標(biāo)事件
滾輪事件
輸入事件
鍵盤事件

用戶界面事件

用戶界面數(shù)據(jù)一般是指界面事件或者UI事件:比如onload,unload
onload事件表示文檔已經(jīng)下載完成或者圖片下載完成心铃。圖片只要設(shè)置了src屬性准谚,那么久會(huì)觸發(fā)onload事件
unload:表示文檔已經(jīng)卸載了就會(huì)觸發(fā)這個(gè)事件
resize:當(dāng)瀏覽器窗口縮放到一個(gè)新的高度或者寬度就會(huì)觸發(fā)這個(gè)事件
scroll:頁(yè)面中相關(guān)元素發(fā)生變化就會(huì)觸發(fā)這個(gè)事件

焦點(diǎn)事件

blur:當(dāng)元素失去焦點(diǎn)時(shí)候觸發(fā)
focus:當(dāng)元素獲得焦點(diǎn)的時(shí)候觸發(fā)

鼠標(biāo)和滾輪事件

click:用戶點(diǎn)擊鼠標(biāo)主鍵時(shí)候觸發(fā)
dbclick:雙擊觸發(fā)
mosedown:按下鼠標(biāo)任意按鍵觸發(fā),該事件不能通過(guò)鍵盤觸發(fā)
moseenter:鼠標(biāo)光標(biāo)從元素外部移動(dòng)到元素內(nèi)部觸發(fā)
mouseleave:鼠標(biāo)從元素內(nèi)部移動(dòng)到元素外部觸發(fā)

事件距離相關(guān)屬性

pageX,pageY :光標(biāo)在頁(yè)面中的位置
clientX,clientY:代表光標(biāo)距離視口的位置
screentX,screenY:表示光標(biāo)距離桌面的距離
offsetX,offsetY:表示光標(biāo)距離目標(biāo)元素的距離

事件委托

過(guò)得的事件處理程序需要用到事件委托。事件委托需要一個(gè)共同的目標(biāo)元素去扣。事件委托主要是通過(guò)事件冒泡到相同的元素上面柱衔,在通過(guò)事件的target,來(lái)區(qū)分不同元素的事件愉棱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唆铐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奔滑,更是在濱河造成了極大的恐慌艾岂,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件档押,死亡現(xiàn)場(chǎng)離奇詭異澳盐,居然都是意外死亡祈纯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門叼耙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)腕窥,“玉大人,你說(shuō)我怎么就攤上這事筛婉〈乇” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵爽撒,是天一觀的道長(zhǎng)入蛆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)硕勿,這世上最難降的妖魔是什么哨毁? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮源武,結(jié)果婚禮上扼褪,老公的妹妹穿的比我還像新娘。我一直安慰自己粱栖,他們只是感情好话浇,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闹究,像睡著了一般幔崖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渣淤,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天赏寇,我揣著相機(jī)與錄音,去河邊找鬼砂代。 笑死蹋订,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刻伊。 我是一名探鬼主播露戒,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捶箱!你這毒婦竟也來(lái)了智什?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丁屎,失蹤者是張志新(化名)和其女友劉穎荠锭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晨川,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡证九,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年删豺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愧怜。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呀页,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拥坛,到底是詐尸還是另有隱情蓬蝶,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布猜惋,位于F島的核電站丸氛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏著摔。R本人自食惡果不足惜缓窜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梨撞。 院中可真熱鬧雹洗,春花似錦、人聲如沸卧波。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)港粱。三九已至,卻和暖如春旦签,著一層夾襖步出監(jiān)牢的瞬間查坪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工宁炫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留偿曙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓羔巢,卻偏偏與公主長(zhǎng)得像望忆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子竿秆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 事件启摄,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互瞬間∮母郑可以使用偵聽器(或處理程序)來(lái)預(yù)訂事件歉备,以便事件發(fā)生時(shí)執(zhí)行相...
    EdmundChen閱讀 346評(píng)論 0 2
  • js和HTML之間交互是通過(guò)事件實(shí)現(xiàn)的。事件會(huì)有事件流匪燕。事件描述的是從頁(yè)面接受事件的順序蕾羊。IE和網(wǎng)景提出了差不多相...
    言大大freedom閱讀 625評(píng)論 0 0
  • 本來(lái)想和上一篇一起寫喧笔,又擔(dān)心太長(zhǎng),導(dǎo)致自己復(fù)習(xí)時(shí)龟再,看不下去书闸,于是就另寫一篇筆記。 ClientX與ClientY返...
    Miss____Du閱讀 8,264評(píng)論 3 6
  • 什么是事件: 事件是交互體驗(yàn)的核心功能 一.事件冒泡: 當(dāng)一個(gè)事件發(fā)生時(shí)吸申,這個(gè)事件會(huì)從內(nèi)向外逐層傳遞梗劫。 二.為什么...
    輕描淡寫mua閱讀 519評(píng)論 0 0
  • js事件的分類 事件的類型:有鼠標(biāo)事件梳侨,鍵盤事件,HTML事件日丹,變化事件 注意:js中的事件前面要加on (如:o...
    叫我阿領(lǐng)就好閱讀 154評(píng)論 0 0