国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

理解DOM事件流的三個(gè)階段

afishhhhh / 969人閱讀

摘要:本文主要解決兩個(gè)問(wèn)題什么是事件流事件流的三個(gè)階段起因在學(xué)習(xí)前端的大半年來(lái),對(duì)事件了解甚少。事件流所描述的就是從頁(yè)面中接受事件的順序。事件流事件流包括三個(gè)階段。防止事件冒泡而帶來(lái)不必要的錯(cuò)誤和困擾。分有事件冒泡與事件捕獲兩種。

本文主要解決兩個(gè)問(wèn)題:

什么是事件流

DOM事件流的三個(gè)階段

起因

在學(xué)習(xí)前端的大半年來(lái),對(duì)DOM事件了解甚少。一般也只是用用onclick來(lái)綁定個(gè)點(diǎn)擊事件。在寒假深入學(xué)習(xí)JavaScript時(shí),愈發(fā)覺(jué)得自己對(duì)DOM事件了解不夠,遂打開(kāi)我的《JavaScript高級(jí)程序設(shè)計(jì)》,翻到DOM事件那一章,開(kāi)始第二次學(xué)習(xí)之旅。
當(dāng)然,DOM事件所囊括的知識(shí)較為龐雜,所以本文專(zhuān)注與自己學(xué)習(xí)時(shí)所碰到的難點(diǎn),DOM事件流。

流的概念,在現(xiàn)今的JavaScript中隨處可見(jiàn)。比如說(shuō)React中的單向數(shù)據(jù)流,Node中的流,又或是今天本文所講的DOM事件流。都是流的一種生動(dòng)體現(xiàn)。
至于流的具體概念,我們采用下文的解釋?zhuān)?/p>

用術(shù)語(yǔ)說(shuō)流是對(duì)輸入輸出設(shè)備的抽象。以程序的角度說(shuō),流是具有方向的數(shù)據(jù)。
通通連起來(lái)——無(wú)處不在的流 淘寶FED--愈之

事件流之事件冒泡與事件捕獲

在瀏覽器發(fā)展的過(guò)程中,開(kāi)發(fā)團(tuán)隊(duì)遇到了一個(gè)問(wèn)題。那就是頁(yè)面中的哪一部分擁有特定的事件?
可以想象畫(huà)在一張紙上的一組同心圓,如果你把手指放在圓心上,那么你的手指指向的其實(shí)不是一個(gè)圓,而是紙上所有的圓。放到實(shí)際頁(yè)面中就是,你點(diǎn)擊一個(gè)按鈕,事實(shí)上你還同時(shí)點(diǎn)擊了按鈕所有的父元素。
開(kāi)發(fā)團(tuán)隊(duì)的問(wèn)題就在于,當(dāng)點(diǎn)擊按鈕時(shí),是按鈕最外層的父元素先收到事件并執(zhí)行,還是具體元素先收到事件并執(zhí)行?所以這兒引入了事件流的概念。

事件流所描述的就是從頁(yè)面中接受事件的順序。

因?yàn)橛袃煞N觀點(diǎn),所以事件流也有兩種,分別是事件冒泡和事件捕獲。現(xiàn)行的主流是事件冒泡。

事件冒泡

事件冒泡即事件開(kāi)始時(shí),由最具體的元素接收(也就是事件發(fā)生所在的節(jié)點(diǎn)),然后逐級(jí)傳播到較為不具體的節(jié)點(diǎn)。
舉個(gè)栗子,就很容易明白了。




  
  Event Bubbling


  

然后,我們給button和它的父元素,加入點(diǎn)擊事件。

var button = document.getElementById("clickMe");

button.onclick = function() {
  console.log("1. You click Button");
};
document.body.onclick = function() {
  console.log("2. You click body");
};
document.onclick = function() {
  console.log("3. You click document");
};
window.onclick = function() {
  console.log("4. You click window");
};

效果如圖所示:

在代碼所示的頁(yè)面中,如果點(diǎn)擊了button,那么這個(gè)點(diǎn)擊事件會(huì)按如下的順序傳播(Chrome瀏覽器):

button

body

document

window

也就是說(shuō),click事件首先在

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/49738.html

相關(guān)文章

  • 理解DOM事件流的三個(gè)階段

    摘要:本文主要解決兩個(gè)問(wèn)題什么是事件流事件流的三個(gè)階段起因在學(xué)習(xí)前端的大半年來(lái),對(duì)事件了解甚少。事件流所描述的就是從頁(yè)面中接受事件的順序。事件流事件流包括三個(gè)階段。防止事件冒泡而帶來(lái)不必要的錯(cuò)誤和困擾。分有事件冒泡與事件捕獲兩種。 本文主要解決兩個(gè)問(wèn)題: 什么是事件流 DOM事件流的三個(gè)階段 起因 在學(xué)習(xí)前端的大半年來(lái),對(duì)DOM事件了解甚少。一般也只是用用onclick來(lái)綁定個(gè)點(diǎn)擊事件。...

    xiangzhihong 評(píng)論0 收藏0
  • 你真的理解事件冒泡和事件捕獲嗎?

    摘要:事件流是事件冒泡,而的事件流就是事件捕獲。所有現(xiàn)代瀏覽器都支持事件冒泡,并且會(huì)將事件一直冒泡到對(duì)象。事件捕獲的用以在于事件到達(dá)預(yù)定目標(biāo)之前捕獲它。事件流級(jí)事件規(guī)定事件流包括三個(gè)階段,事件捕獲階段處于目標(biāo)階段和事件冒泡階段。 最近在復(fù)習(xí)前端的基礎(chǔ),看到事件這一節(jié)的時(shí)候,剛好發(fā)現(xiàn)了筆記中一道特別好玩并且十分有趣的代碼,根據(jù)這么一道題目,基本上能夠把事件冒泡和事件捕獲的盲區(qū)給掃空。本文就帶你...

    Cheriselalala 評(píng)論0 收藏0
  • 你真的理解事件冒泡和事件捕獲嗎?

    摘要:事件流是事件冒泡,而的事件流就是事件捕獲。所有現(xiàn)代瀏覽器都支持事件冒泡,并且會(huì)將事件一直冒泡到對(duì)象。事件捕獲的用以在于事件到達(dá)預(yù)定目標(biāo)之前捕獲它。事件流級(jí)事件規(guī)定事件流包括三個(gè)階段,事件捕獲階段處于目標(biāo)階段和事件冒泡階段。 最近在復(fù)習(xí)前端的基礎(chǔ),看到事件這一節(jié)的時(shí)候,剛好發(fā)現(xiàn)了筆記中一道特別好玩并且十分有趣的代碼,根據(jù)這么一道題目,基本上能夠把事件冒泡和事件捕獲的盲區(qū)給掃空。本文就帶你...

    henry14 評(píng)論0 收藏0
  • 你真的理解事件冒泡和事件捕獲嗎?

    摘要:事件流是事件冒泡,而的事件流就是事件捕獲。所有現(xiàn)代瀏覽器都支持事件冒泡,并且會(huì)將事件一直冒泡到對(duì)象。事件捕獲的用以在于事件到達(dá)預(yù)定目標(biāo)之前捕獲它。事件流級(jí)事件規(guī)定事件流包括三個(gè)階段,事件捕獲階段處于目標(biāo)階段和事件冒泡階段。 最近在復(fù)習(xí)前端的基礎(chǔ),看到事件這一節(jié)的時(shí)候,剛好發(fā)現(xiàn)了筆記中一道特別好玩并且十分有趣的代碼,根據(jù)這么一道題目,基本上能夠把事件冒泡和事件捕獲的盲區(qū)給掃空。本文就帶你...

    amuqiao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<