日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解JavaScript 事件流

瀏覽:182日期:2023-10-16 15:52:24

事件

HTML中與javascript交互是通過事件驅(qū)動來實現(xiàn)的,例如鼠標點擊事件、頁面的滾動事件onscroll等等,可以向文檔或者文檔中的元素添加事件偵聽器來預(yù)訂事件。想要知道這些事件是在什么時候進行調(diào)用的,就需要了解一下“事件流”的概念。

事件流

事件流描述的就是從頁面中接收事件的順序。而早期的IE和Netscape提出了完全相反的事件流概念,IE事件流是事件冒泡,而Netscape的事件流就是事件捕獲。

事件流類別

事件冒泡

即從下至上,從目標觸發(fā)的元素逐級向上傳播,直到window對象。

詳解JavaScript 事件流

事件捕獲

即從上至下,從document逐級向下傳播到目標元素。

詳解JavaScript 事件流

后來ECMAScript在DOM2中對事件流進行了進一步規(guī)范,基本上就是上述二者的結(jié)合。

DOM2級事件規(guī)定的事件流包括三個階段:

事件捕獲階段 處于目標階段 事件冒泡階段

注意⚠️:先捕獲后冒泡,但是在目標節(jié)點上誰寫在前面誰先執(zhí)行。但是在目標元素上不區(qū)分冒泡還是捕獲,按綁定的順序來執(zhí)行。

詳解JavaScript 事件流

DOM事件級別

分為四個級別

詳解JavaScript 事件流

DOM0:不是W3C規(guī)范。

DOM1:開始是W3C規(guī)范。專注于HTML文檔和XML文檔。

DOM2:對DOM1增加了樣式表對象模型

DOM3:對DOM2增加了內(nèi)容模型 (DTD 、Schemas) 和文檔驗證。

DOM0級

DOM0級事件具有極好的跨瀏覽器優(yōu)勢,會以最快的速度綁定。綁定方式有如下兩種

行內(nèi)綁定(內(nèi)聯(lián)模型)

將函數(shù)名直接作為html標簽中屬性的屬性值。

<div onclick='btnClick()'>按鈕</div><script>function btnClick(){ console.log('hello');}</script>

動態(tài)綁定(腳本模型)

通過在JS中選中某個節(jié)點,然后給節(jié)點添加onclick屬性

<div id='btn'>按鈕</div><script>var btn = document.getElementById('btn');btn.onclick = function(){ console.log('點擊');}</script>

注意⚠️

DOM0級同一個節(jié)點只能添加一次同類型事件,后添加的同類型事件會覆蓋前面的事件 DOM0級只支持冒泡

DOM1級

其中DOM1級事件處理標準中并沒有定義事件相關(guān)的內(nèi)容,所以沒有所謂的DOM1事件處理

DOM2級

DOM2級定義了兩個事件處理程序。(觀察者模式)

addEventListener() ---添加事件偵聽器 removeEventListener() ---刪除事件偵聽器

函數(shù)均有3個參數(shù), 第一個參數(shù)是要處理的事件名 第二個參數(shù)是作為事件處理程序的函數(shù) 第三個參數(shù)是一個boolean值,默認false表示使用冒泡機制,true表示捕獲機制。

<div id='btn'>按鈕</div><script>var btn=document.getElementById('btn');btn.addEventListener('click',hello,false);btn.addEventListener('click',helloagain,false);function hello(){ console.log('hello');}function helloagain(){ console.log('hello again');}</script>// 點擊后結(jié)果: // hello// hello again

注意⚠️

如果定義了一模一樣的監(jiān)聽方法時,是會發(fā)生覆蓋的。

<div id='btn'>點擊</div><script>var btn=document.getElementById('btn');btn.addEventListener('click',hello,false);btn.addEventListener('click',hello,false);function hello(){ console.log('hello');}</script>// 點擊后結(jié)果: // hello

DOM3級

對DOM2增加了內(nèi)容模型 (DTD 、Schemas) 和文檔驗證。定義了一些新的事件,比如鍵盤事件,還可以自定義事件。

自定義事件

自定義事件不是由DOM原生觸發(fā)的,它的目的是讓開發(fā)人員創(chuàng)建自己的事件。要創(chuàng)建的自定義事件可以由createEvent('CustomEvent'); 返回的對象有一個initCustomEvent()方法接收如下四個參數(shù)。

type:字符串,觸發(fā)的事件類型,自定義。例如 “keyDown”,“selectedChange”; bubble(布爾值):標示事件是否應(yīng)該冒泡; cancelable(布爾值):標示事件是否可以取消; detail(對象):任意值,保存在event對象的detail屬性中;

可以像分配其他事件一樣在DOM中分派創(chuàng)建的自定義事件對象。如:

var div = document.getElementById('myDiv');EventUtil.addEventHandler(div,'myEvent', function () { alert('div myEvent!');});EventUtil.addEventHandler(document,'myEvent',function(){ alert('document myEvent!');});if(document.implementation.hasFeature('CustomEvents','3.0')){ var e = document.createEvent('CustomEvent'); e.initCustomEvent('myEvent',true,false,'hello world!'); div.dispatchEvent(e);}

這個例子中創(chuàng)建了一個冒泡事件“myEvent”。而event.detail的值被設(shè)置成了一個簡單的字符串,然后在div和document上偵聽該事件,因為在initCustomEvent中設(shè)置了事件冒泡。所以當div激發(fā)該事件時,瀏覽器會將該事件冒泡到document。

阻止冒泡

stopPropagation函數(shù)

btn.addEventListener(’click’,function(ev){ ev.stopPropagation(); console.log(’阻止冒泡’)}, false)

事件委托(事件代理)

原理

如果有多個DOM節(jié)點需要監(jiān)聽事件的情況下,給每個DOM綁定監(jiān)聽函數(shù),會極大的影響頁面的性能,因為我們通過事件委托來進行優(yōu)化,事件委托利用的就是冒泡的原理。

<ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li></ul><script> var li_list = document.getElementsByTagName(’li’) for(let index = 0;index<li_list.length;index++){ li_list[index].addEventListener(’click’, function(ev){ console.log(ev.currentTarget.innerHTML) }) }</script>

正常情況我們給每一個li都會綁定一個事件,但是如果這時候li是動態(tài)渲染的,數(shù)據(jù)又特別大的時候,每次渲染后(有新增的情況)我們還需要重新來綁定,又繁瑣又耗性能;這時候我們可以將綁定事件委托到li的父級元素,即ul。

var ul_dom = document.getElementsByTagName(’ul’)ul_dom[0].addEventListener(’click’, function(ev){ console.log(ev.target.innerHTML)})

target和currentTarget區(qū)別:

target返回觸發(fā)事件的元素,不一定是綁定事件的元素 currentTarget返回的是綁定事件的元素

優(yōu)點

提高性能: 每一個函數(shù)都會占用內(nèi)存空間,只需添加一個事件處理程序代理所有事件,所占用的內(nèi)存空間更少。 動態(tài)監(jiān)聽: 使用事件委托可以自動綁定動態(tài)添加的元素,即新增的節(jié)點不需要主動添加也可以一樣具有和其他元素一樣的事件。

以上就是詳解JavaScript 事件流的詳細內(nèi)容,更多關(guān)于JavaScript 事件流的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国模精品一区| 日本 国产 欧美色综合| 啪啪亚洲精品| 男女男精品网站| 蜜桃一区二区三区在线观看| 亚洲免费激情| 一区在线观看| 99在线精品免费视频九九视| 日韩亚洲国产欧美| 好看不卡的中文字幕| 精品在线播放| 欧美日韩激情| 亚洲精品一二三区区别| 999精品一区| 日韩一区二区三区免费| 91看片一区| 超碰在线99| 97se综合| 久久美女性网| 亚洲精品国产偷自在线观看| 欧美中文字幕一区二区| 日韩高清中文字幕一区二区| 99久久婷婷这里只有精品| 久久不射网站| 蜜臀av亚洲一区中文字幕| 亚洲精品极品| 国产日韩欧美| 国产成人免费| 久久久国产精品一区二区中文| 久久久久久久久99精品大| 国产一区日韩欧美| 在线午夜精品| 日本中文字幕视频一区| 国产日本精品| 天堂中文av在线资源库| 激情91久久| 欧美色综合网| 福利精品一区| 午夜国产精品视频| 国产在视频一区二区三区吞精| 免费在线亚洲| 久久精品播放| 青草国产精品| 亚洲精品在线影院| av综合电影网站| 91亚洲精品在看在线观看高清| 国产伊人久久| 夜久久久久久| 国产精品美女| 色爱综合av| 国产精品久久久网站| 国产精品成久久久久| 91精品一区二区三区综合| 日韩一区精品字幕| 国产精品日本一区二区不卡视频| 成人福利av| 免费在线观看不卡| 欧美精品aa| 国产高清久久| 国产精品一线| 国产中文一区| 蜜桃久久久久久久| 麻豆成人综合网| 午夜国产精品视频| 国产伦理一区| 国产韩日影视精品| 国产精品久久久久9999高清| 五月天久久777| 99久精品视频在线观看视频| 私拍精品福利视频在线一区| 一区二区国产精品| 日韩av专区| 综合激情五月婷婷| 91日韩免费| 亚洲日本免费电影| 国产中文在线播放| 欧美综合国产| 国产一区二区三区亚洲综合| 天堂成人国产精品一区| 大香伊人久久精品一区二区| 制服诱惑一区二区| 精品美女久久| 亚洲综合中文| 久久高清免费| 久久av免费看| 中文字幕日韩欧美精品高清在线| 国产精品成人一区二区不卡| 国产视频一区在线观看一区免费| 精品国产黄a∨片高清在线| 亚洲影院天堂中文av色| 亚洲视频二区| 国产偷自视频区视频一区二区| 亚洲精品在线影院| 日本国产精品| 国产日韩在线观看视频| 四虎成人av| 奶水喷射视频一区| 日韩三级久久| 色狠狠一区二区三区| 99久久精品网站| 精品午夜久久| 亚洲va久久久噜噜噜久久| 99精品国产一区二区三区| 国产精品欧美日韩一区| 丝袜诱惑制服诱惑色一区在线观看| 日韩久久一区二区三区| 免费精品一区| 99香蕉国产精品偷在线观看 | 欧美在线综合| 久久久9色精品国产一区二区三区| 国产精品乱战久久久| 亚洲精品影视| 麻豆成人在线| 一区在线免费| 高清av一区二区三区| 国产成人精品999在线观看| 国产精品一区二区三区www| 亚洲一二三区视频| 欧美不卡在线| 偷拍精品精品一区二区三区| 精品久久一区| 国产精品v日韩精品v欧美精品网站 | 日韩av中文字幕一区二区三区| 99香蕉国产精品偷在线观看 | 亚洲天堂免费电影| 亚洲aa在线| 日韩午夜黄色| 国内精品福利| 国产麻豆综合| 日欧美一区二区| 国产精品久久亚洲不卡| 欧美精选一区二区三区| 综合精品一区| 亚洲精品在线二区| 日韩黄色av| 首页亚洲欧美制服丝腿| 亚洲精选成人| 97久久中文字幕| 国产精品久久久久久久久久齐齐 | 日本综合精品一区| 日本成人在线不卡视频| 欧美日韩亚洲一区三区| 亚洲一二三区视频| 亚洲在线久久| 欧美日韩一区二区三区不卡视频| 日韩网站中文字幕| 亚洲成人不卡| 日韩国产欧美一区二区| 日韩激情网站| 国产精品一级| 欧美日韩精品一区二区三区视频 | 久久狠狠婷婷| 亚洲黄色中文字幕| 高清久久精品| 亚洲最新无码中文字幕久久 | 蜜臀av一区二区在线免费观看| 欧美午夜精品一区二区三区电影| 九九精品调教| 日韩高清欧美| 欧美日韩精品免费观看视频完整| 狠狠操综合网| 日韩视频久久| 视频一区二区不卡| 日韩精品久久久久久久电影99爱| 亚洲一区黄色| 国产精品女主播一区二区三区| 亚洲高清av| 亚洲影院天堂中文av色| 国产精品久久久亚洲一区| 狠狠久久伊人| 免费在线成人网| 97se亚洲| 欧美成人综合| 免费不卡中文字幕在线| 久久超级碰碰| 久久亚洲精精品中文字幕| 美女久久99| 国产白浆在线免费观看| 日韩国产网站| 在线亚洲观看| 国产精品美女午夜爽爽| 欧美国产中文高清| 国产夫妻在线| re久久精品视频| 中文视频一区| 中文在线а√在线8| 国产精品二区不卡| 久久国产欧美| 蜜臀av一区二区在线免费观看 | 日韩国产一区二区三区| 欧美精选一区二区三区| 男女男精品网站| 国产剧情一区二区在线观看| 国产成人精品免费视| 亚洲制服少妇| 国产欧美日韩影院| av资源新版天堂在线| 婷婷激情图片久久| 日本a级不卡| 日韩免费看片|