事件 —— 如何使用事件,以及IE和標(biāo)準(zhǔn)DOM事件模型之間存在的差別

如何使用事件君仆?以及IE和標(biāo)準(zhǔn)DOM事件模型之間存在的差別忙厌?


  1. 關(guān)于事件流
1.1 IE的事件流:事件冒泡
  由事件的目標(biāo)(event.srcElement)接受事件凫岖,然后逐級(jí)向上(例:下一個(gè)為包含event.srcElement的節(jié)點(diǎn)傳遞事件,直到文檔節(jié)點(diǎn)document;
1.2 其他瀏覽器支持的另一種事件流:事件捕獲
  與事件冒泡正好相反,文檔節(jié)點(diǎn)document先監(jiān)聽到事件逢净,然后把事件逐級(jí)向下傳遞事件哥放,直到目標(biāo)節(jié)點(diǎn)event.target;
1.3 DOM事件流
  DOM2級(jí)事件規(guī)范的事件流綜合了以上兩種爹土,把事件流分為了以下三個(gè)階段:
  1.3.1 事件捕獲階段
    不涉及事件目標(biāo)甥雕,或者說(shuō)這個(gè)階段在目標(biāo)之前就結(jié)束了;
  1.3.2 處于目標(biāo)階段
    被看作冒泡階段的一部分胀茵,所以可以在冒泡階段在目標(biāo)事件上操作事件社露;
  1.3.3 事件冒泡階段
1.4 規(guī)范和瀏覽器實(shí)現(xiàn)的差別
  DOM2級(jí)事件規(guī)范的捕獲階段,事件從文檔節(jié)點(diǎn)document開始傳播琼娘,現(xiàn)代瀏覽器大多數(shù)都是從window對(duì)象開始傳播事件的峭弟;
  DOM2級(jí)事件規(guī)范捕獲階段不涉及事件目標(biāo),現(xiàn)代瀏覽器大多數(shù)都在這個(gè)階段包含事件目標(biāo)脱拼。
  1. 如何使用事件瞒瘸?以下是幾種用來(lái)響應(yīng)事件的事件處理程序
    HTML事件處理程序|DOM0級(jí)事件處理程序|DOM2級(jí)事件處理程序|IE的事件處理程序(IE11以下)
2.1HTML事件處理程序
  2.1.1 指定事件:<button type="button" onclick="alert('響應(yīng)事件的處javascript代碼,可以用全局的函數(shù)')">Click Me!</button>
  2.1.2 優(yōu)缺點(diǎn):簡(jiǎn)單熄浓,但是與HTML代碼緊密耦合情臭,更改不方便;
  2.1.3 刪除事件:同DOM0的刪除事件處理方式;
2.2 DOM0級(jí)事件處理程序
  2.2.1 指定事件:document.onclick = function(){alert("document has been clicked")};
  2.2.2 刪除事件:document.onclick = null;
  2.2.3 優(yōu)缺點(diǎn):簡(jiǎn)單且跨瀏覽器
  2.2.4 實(shí)質(zhì): 為元素指定方法(栗子中為document指定onclick方法),移除方法,所以其處理程序是在元素的作用域運(yùn)行的俯在;
2.3 DOM2級(jí)事件處理程序
  2.3.1 指定事件:addEventListener("引號(hào)括起來(lái)的事件名"丁侄, 觸發(fā)事件后調(diào)用的事件處理程序, 是否在捕獲節(jié)點(diǎn)調(diào)用時(shí)間處理程序的布爾值)
    栗子:var funA = function(){alert(" DOM2級(jí)事件處理程序")};
          document.addEventListener("click", funA, false);
  2.3.2 刪除事件: document.removeEventListener("click", funA, false);
    如果指定的處理程序是匿名函數(shù)則不能刪除,因?yàn)闆]有函數(shù)名;
  2.3.3 優(yōu)缺點(diǎn): 可以添加多個(gè)監(jiān)聽事件朝巫,缺點(diǎn)見2.3.2;
2.4 IE的事件處理程序(IE11以下,IE11及Edge用的DOM2級(jí)事件處理程序)
  2.4.1 指定事件: attachEvent("onclick", function(){alert("is no longer supported in ie11")});
  2.4.2 刪除事件: detachEvent("onclick", funA);
    如果指定的處理程序是匿名函數(shù)則不能刪除石景,因?yàn)闆]有函數(shù)名;
  2.4.3 優(yōu)缺點(diǎn):可以添加多個(gè)監(jiān)聽事件劈猿,缺點(diǎn)見2.4.2;

  1. IE和標(biāo)準(zhǔn)DOM事件模型之間存在的差別
3.1 這里的IE是IE11以下;
3.2 參數(shù)的差別: attachEvent()的第一個(gè)參數(shù)比addEventListener()的事件名多一個(gè)"on",
    且沒有第三個(gè)參數(shù)潮孽,因?yàn)镮E事件模型只支持冒泡事件流;
3.3 事件處理函數(shù)作用域的區(qū)別: IE中事件處理程序處于全局作用域揪荣,其內(nèi)的this會(huì)指向window;
    而用DOM(0或2)級(jí)事件的事件處理程序的作用域是元素作用域,其內(nèi)的this指向其所屬的元素
    例: document.addEventListener("click", function(){ 
            if(this == document){
              alert("此時(shí)this指向document");
            }
          }, false);
3.4 事件對(duì)象event的屬性方法的差別
        IE                    DOM
cancelBubble = true    stopPropagation() //停止冒泡
returnValue = false    preventDefault() //阻止元素默認(rèn)事件
srcEelement            target //事件目標(biāo)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末往史,一起剝皮案震驚了整個(gè)濱河市仗颈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椎例,老刑警劉巖挨决,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異订歪,居然都是意外死亡脖祈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門刷晋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盖高,“玉大人,你說(shuō)我怎么就攤上這事眼虱∮靼拢” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵捏悬,是天一觀的道長(zhǎng)撞蚕。 經(jīng)常有香客問我,道長(zhǎng)邮破,這世上最難降的妖魔是什么诈豌? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮抒和,結(jié)果婚禮上矫渔,老公的妹妹穿的比我還像新娘。我一直安慰自己摧莽,他們只是感情好庙洼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般油够。 火紅的嫁衣襯著肌膚如雪蚁袭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天石咬,我揣著相機(jī)與錄音揩悄,去河邊找鬼。 笑死鬼悠,一個(gè)胖子當(dāng)著我的面吹牛删性,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焕窝,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼蹬挺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了它掂?” 一聲冷哼從身側(cè)響起巴帮,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎虐秋,沒想到半個(gè)月后榕茧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熟妓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年雪猪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片起愈。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡只恨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抬虽,到底是詐尸還是另有隱情官觅,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布阐污,位于F島的核電站休涤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏笛辟。R本人自食惡果不足惜功氨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望手幢。 院中可真熱鬧捷凄,春花似錦、人聲如沸围来。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至桶错,卻和暖如春航唆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背院刁。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工糯钙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人退腥。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓超营,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親阅虫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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