DOM級別與DOM事件

事件是javascript和HTML交互基礎(chǔ), 任何文檔或者瀏覽器窗口發(fā)生的交互, 都要通過綁定事件進(jìn)行交互;比如鼠標(biāo)點(diǎn)擊事件棍潘、敲擊鍵盤事件等。這樣的事件行為都是前端DOM事件的組成部分,不同的DOM事件會有不同的觸發(fā)條件和觸發(fā)效果锦聊。

本文就將帶大家深入淺出地了解DOM事件的那些屬性和方法当编。

1.DOM級別與DOM事件:

DOM級別一共可以分為四個級別:DOM0級、DOM1級族壳、DOM2級和DOM3級憔辫。而DOM事件分為3個級別:DOM0級事件處理,DOM2級事件處理和DOM3級事件處理仿荆。

有人可能會疑惑贰您,為什么沒有DOM1級事件處理呢坏平?因?yàn)?級DOM標(biāo)準(zhǔn)并沒有定義事件相關(guān)的內(nèi)容,所以沒有所謂的1級DOM事件模型锦亦。

1.DOM0級事件之前舶替,我們有必要了解一下HTML事件處理程序,也是最早的一種事件處理方式

  <button type="button" onclick="showFn()"></button>
  function showFn() {
      alert('Hello World');
  }

以上的代碼杠园,我們通過直接在HTML代碼里面定義了一個 onclick屬性觸發(fā)showfu這樣的事件處理程序最大的缺點(diǎn)就是HTML和JS耦合太強(qiáng)坎穿,我們?nèi)绻枰薷暮瘮?shù)名就必須修改兩個地方,優(yōu)點(diǎn)是不需要操作DOM來完成事件的綁定返劲。

DOM0級處理事件就是將一個函數(shù)賦值給一個事件處理屬性玲昧。

    <button id="btn" type="button"></button>
    var btn = document.getElementById('btn');
    btn.onclick = function() {
        console.log('Hello World');
    }

以上的代碼我們給button定義了一個id 通過js原生的api獲取按鈕
將一個函數(shù)賦值給了一個事件處理屬性onclick 這樣的方法就是DOM0級
處理事件的體現(xiàn)。我們可以通過給事件處理屬性賦值null來解綁事件篮绿。

DOM0級事件處理程序的缺點(diǎn)在于一個處理程序無法同時綁定多個處理函數(shù)孵延,比如我還想再點(diǎn)擊按鈕事件上加上另外一個函數(shù)。

2.DOM2級事件

DOM2級事件在DOM0級時間段額基礎(chǔ)上彌補(bǔ)了一個處理處理程序
無法同時綁定多個處理函數(shù)的缺點(diǎn)亲配。允許給一個程序添加多個處理函數(shù)尘应。

    <button id="btn" type="button"></button>
    var btn = document.getElementById('btn');    
    function showFn() {
        alert('Hello World');
    }    
    btn.addEventListener('click', showFn, false);
    // btn.removeEventListener('click', showFn, false); 解綁事件 

DOM2級事件定義了addEventListener 和 removeEventListener兩個方法,分別用來綁定和解綁事件吼虎,方法中包含三個參數(shù)犬钢,分別是綁定的事件處理的屬性名稱(沒有on)處理函數(shù)和是否在捕獲時候執(zhí)行事件處理函數(shù)如果我們還需要添加一個鼠標(biāo)的移入的方法,只需要:

    btn.addEventlistener('mouseover',showfn,false)

這樣思灰,點(diǎn)擊按鈕和鼠標(biāo)移入時候都將觸發(fā)showfn的方法玷犹。

需要注意的是IE8以下版本不支持 addEventlistener 和 removeEventListerner
需要使用attachEvent和detachEvent實(shí)現(xiàn):

    btn.attachEvent('onclick', showFn); // 綁定事件 
    btn.detachEvent('onclick', showFn); // 解綁事件

這里我們不需要傳入第三個參數(shù),因?yàn)镮E8以下版本只支持冒泡型事件洒疚。

3.DOM3級事件

DOM3級事件是在DOM2級事件的基礎(chǔ)上添加很多事件類型歹颓。
UI事件,當(dāng)用戶與頁面上的元素交互時觸發(fā)油湖,如:load巍扛、scroll
焦點(diǎn)事件,當(dāng)元素獲得或失去焦點(diǎn)時觸發(fā)乏德,如:blur撤奸、focus
鼠標(biāo)事件,當(dāng)用戶通過鼠標(biāo)在頁面執(zhí)行操作時觸發(fā)如:dbclick喊括、mouseup
滾輪事件胧瓜,當(dāng)使用鼠標(biāo)滾輪或類似設(shè)備時觸發(fā),如:mousewheel
文本事件瘾晃,當(dāng)在文檔中輸入文本時觸發(fā)贷痪,如:textInput
鍵盤事件幻妓,當(dāng)用戶通過鍵盤在頁面上執(zhí)行操作時觸發(fā)蹦误,如:keydown劫拢、keypress
合成事件,當(dāng)為IME(輸入法編輯器)輸入字符時觸發(fā)强胰,如:compositionstart
變動事件舱沧,當(dāng)?shù)讓覦OM結(jié)構(gòu)發(fā)生變化時觸發(fā),如:DOMsubtreeModified
同時DOM3級事件也允許使用者自定義一些事件偶洋。

參考鏈接:http://www.reibang.com/p/8c41a302bb17

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熟吏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子玄窝,更是在濱河造成了極大的恐慌牵寺,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恩脂,死亡現(xiàn)場離奇詭異帽氓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)俩块,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門黎休,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玉凯,你說我怎么就攤上這事势腮。” “怎么了漫仆?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵捎拯,是天一觀的道長。 經(jīng)常有香客問我盲厌,道長玄渗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任狸眼,我火速辦了婚禮藤树,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拓萌。我一直安慰自己岁钓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布微王。 她就那樣靜靜地躺著屡限,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炕倘。 梳的紋絲不亂的頭發(fā)上钧大,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機(jī)與錄音罩旋,去河邊找鬼啊央。 笑死眶诈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瓜饥。 我是一名探鬼主播逝撬,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乓土!你這毒婦竟也來了宪潮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤趣苏,失蹤者是張志新(化名)和其女友劉穎狡相,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體食磕,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谣光,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了芬为。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萄金。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖媚朦,靈堂內(nèi)的尸體忽然破棺而出氧敢,到底是詐尸還是另有隱情,我是刑警寧澤询张,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布孙乖,位于F島的核電站,受9級特大地震影響份氧,放射性物質(zhì)發(fā)生泄漏唯袄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一蜗帜、第九天 我趴在偏房一處隱蔽的房頂上張望恋拷。 院中可真熱鬧,春花似錦厅缺、人聲如沸蔬顾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诀豁。三九已至,卻和暖如春窥妇,著一層夾襖步出監(jiān)牢的瞬間舷胜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工活翩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烹骨,地道東北人翻伺。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像展氓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脸爱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

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

  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的簿废。 ??事件空入,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,503評論 1 11
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,132評論 0 21
  • 事件流 JavaScript與HTML之間的交互是通過事件實(shí)現(xiàn)的。事件族檬,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互...
    DHFE閱讀 834評論 0 3
  • 聲明:本文來源于http://www.webzsky.com/?p=731我只是在這里作為自己的學(xué)習(xí)筆記整理一下(...
    angryyan閱讀 7,033評論 1 6
  • js之事件機(jī)制 1歪赢、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驅(qū)動...
    道無虛閱讀 2,374評論 1 3