做網(wǎng)站服務(wù)商新鄉(xiāng)網(wǎng)絡(luò)推廣外包
JavaScript與HTML之間的交互是通過事件實(shí)現(xiàn)的,而用戶與瀏覽器頁面的互動(dòng)也是通過事件來實(shí)現(xiàn)的事件就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互瞬間,所以分為兩種事件,一是發(fā)生在 瀏覽器對(duì)象(BOM)上的事件,一是發(fā)生在 文檔對(duì)象(DOM)上的事件。
瀏覽器規(guī)定了兩種事件流模型: 捕獲型事件流 和 冒泡型事件流 。
頁面觸發(fā)一個(gè)事件時(shí),會(huì)按照一定的順序來響應(yīng)事件,事件的響應(yīng)過程為事件流。
在實(shí)際中,事件流包括了三個(gè)階段:事件捕獲階段,處于目標(biāo)階段,事件冒泡階段,當(dāng)點(diǎn)擊一個(gè)div元素時(shí),以下就是事件流的順序:
1. 頂級(jí)對(duì)象(window)接收到click事件,然后逐級(jí)向下捕獲
2. 目標(biāo)元素(div)接收到到事件
3. 對(duì)事件做出響應(yīng),逐級(jí)向上冒泡到頂級(jí)對(duì)象。
1. 頂級(jí)對(duì)象(window)接收到click事件,然后逐級(jí)向下捕獲
2. 目標(biāo)元素(div)接收到到事件
3. 對(duì)事件做出響應(yīng),逐級(jí)向上冒泡到頂級(jí)對(duì)象。
事件冒泡是目標(biāo)元素接受事件,然后逐級(jí)向上傳播到頂級(jí)元素為止。
<!DOCTYPE html>
<html>
<head></head>
<body><div>click me</div>
</body>
</html>
點(diǎn)擊div元素,click事件會(huì)沿著DOM樹向上傳播,在每一級(jí)節(jié)點(diǎn)都會(huì)發(fā)生,冒泡順序?yàn)?#xff1a;div -> body -> html -> document。
事件捕獲與事件冒泡是相反的,是頂級(jí)元素先接收到事件,再逐級(jí)向下傳播到目標(biāo)元素為止
同樣是以上示例,document對(duì)象會(huì)先接收到click事件,然后沿著DOM樹向下傳播到事件的目標(biāo)元素,捕獲順序?yàn)?#xff1a;document -> html -> body -> div,瀏覽器都是從window對(duì)象開始捕獲的。