国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【前端|Javascript第4篇】詳解Javascript的事件模型:小白也能輕松搞懂!

這篇具有很好參考價值的文章主要介紹了【前端|Javascript第4篇】詳解Javascript的事件模型:小白也能輕松搞懂!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

【前端|Javascript第4篇】詳解Javascript的事件模型:小白也能輕松搞懂!,前端,前端,javascript,事件模型
前言

在當(dāng)今數(shù)字時代,前端技術(shù)正日益成為塑造用戶體驗(yàn)的關(guān)鍵。而其中一個不可或缺的核心概念就是JavaScript的事件模型?;蛟S你是剛踏入前端領(lǐng)域的小白,或者是希望深入了解事件模型的開發(fā)者,不論你的經(jīng)驗(yàn)如何,本篇博客都將帶你揭開事件模型的神秘面紗。


?? 作者簡介:程序員小豪,全棧工程師,熱愛編程,曾就職于蔚來、騰訊,現(xiàn)就職于某互聯(lián)網(wǎng)大廠,技術(shù)棧:Vue、React、Python、Java
?? 本文收錄于小豪的前端系列專欄,后續(xù)還會更新前端入門以及前端面試的一些相關(guān)文章,手把手帶你從零學(xué)習(xí)前端到面試找工作,并如果有想進(jìn)入前端領(lǐng)域工作的同學(xué),這個前端專欄會對你有所幫助,歡迎關(guān)注起來呀
?? 本人也會持續(xù)的去關(guān)注AIGC以及人工智能領(lǐng)域的一些動向并總結(jié)到博客中,大家感興趣的可以關(guān)注一下我的人工智能專欄
?? 云原生的入門學(xué)習(xí)系列,大家有興趣的可以看一看

1.事件與事件流

javascript中的事件,可以理解就是在HTML文檔或者瀏覽器中發(fā)生的一種交互操作,使得網(wǎng)頁具備互動性, 常見的有加載事件、鼠標(biāo)事件、自定義事件等

由于DOM是一個樹結(jié)構(gòu),如果在父子節(jié)點(diǎn)綁定事件時候,當(dāng)觸發(fā)子節(jié)點(diǎn)的時候,就存在一個順序問題,這就涉及到了事件流的概念

事件流都會經(jīng)歷三個階段:

  • 事件捕獲階段(capture phase)
  • 處于目標(biāo)階段(target phase)
  • 事件冒泡階段(bubbling phase)
    【前端|Javascript第4篇】詳解Javascript的事件模型:小白也能輕松搞懂!,前端,前端,javascript,事件模型
    事件冒泡是一種從下往上的傳播方式,由最具體的元素(觸發(fā)節(jié)點(diǎn))然后逐漸向上傳播到最不具體的那個節(jié)點(diǎn),也就是DOM中最高層的父節(jié)點(diǎn)
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>事件冒泡</title>
    </head>
    <body>
        <button id="clickMe">按鈕</button>
    </body>
</html>

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

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

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

最后得到的輸出如下:
【前端|Javascript第4篇】詳解Javascript的事件模型:小白也能輕松搞懂!,前端,前端,javascript,事件模型
點(diǎn)擊事件首先在button元素上發(fā)生,然后逐級向上傳播

事件捕獲與事件冒泡相反,事件最開始由不太具體的節(jié)點(diǎn)最早接受事件, 而最具體的節(jié)點(diǎn)(觸發(fā)節(jié)點(diǎn))最后接受事件

2. 事件模型

事件模型可以分為三種:

  • 原始事件模型(DOM0級)
  • 標(biāo)準(zhǔn)事件模型(DOM2級)
  • IE事件模型(基本不用)

原始事件模型

原始事件模型(DOM0級事件模型)是事件綁定的最簡單方式,適用于那些想要快速添加事件監(jiān)聽的場景。這種模型有兩種綁定方式:直接在HTML代碼中綁定和通過JS代碼綁定。讓我們來看看它們的特點(diǎn)和應(yīng)用。

HTML中直接綁定事件

<input type="button" onclick="fun()">

通過JS代碼綁定事件

var btn = document.getElementById('btn');
btn.onclick = fun;

原始事件模型的特點(diǎn):

  • 綁定速度快: 原始事件模型綁定速度非??欤部赡芤?yàn)榻壎ㄟ^于迅速,導(dǎo)致事件無法在頁面完全加載時執(zhí)行。
  • 僅支持冒泡: 原始事件模型只支持事件冒泡,不支持捕獲。
  • 同類型事件只能綁定一次: 如果嘗試為同一個元素綁定多個同類型事件,后綁定的事件會覆蓋之前的事件。
<input type="button" id="btn" onclick="fun1()">

var btn = document.getElementById('btn');
btn.onclick = fun2;

對于上面的情況,嘗試為同一個按鈕綁定兩個點(diǎn)擊事件時,后綁定的事件會覆蓋之前的事件。

要刪除DOM0級事件處理程序,只需將對應(yīng)的事件屬性置為null即可。

btn.onclick = null;

標(biāo)準(zhǔn)事件模型

標(biāo)準(zhǔn)事件模型(DOM2級事件模型)是更加強(qiáng)大和靈活的事件處理方式。在標(biāo)準(zhǔn)事件模型中,一個事件共有三個階段:捕獲階段、處理階段和冒泡階段。讓我們深入了解標(biāo)準(zhǔn)事件模型的特點(diǎn)和使用方法。

事件捕獲階段、處理階段和冒泡階段

  • 事件捕獲階段: 事件從document向下傳播到目標(biāo)元素,檢查經(jīng)過的節(jié)點(diǎn)是否綁定了事件監(jiān)聽函數(shù),如果有則執(zhí)行。
  • 事件處理階段: 事件到達(dá)目標(biāo)元素,觸發(fā)目標(biāo)元素的監(jiān)聽函數(shù)。
  • 事件冒泡階段: 事件從目標(biāo)元素冒泡回document,依次檢查經(jīng)過的節(jié)點(diǎn)是否綁定了事件監(jiān)聽函數(shù),如果有則執(zhí)行。

在標(biāo)準(zhǔn)事件模型中,事件綁定和移除監(jiān)聽函數(shù)的方式如下:

addEventListener(eventType, handler, useCapture);
removeEventListener(eventType, handler, useCapture);

標(biāo)準(zhǔn)事件模型的特點(diǎn):

  • 支持多個事件處理器: 在一個DOM元素上可以綁定多個事件處理器,它們不會相互沖突。
btn.addEventListener('click', showMessage1, false);
btn.addEventListener('click', showMessage2, false);
btn.addEventListener('click', showMessage3, false);
  • 執(zhí)行時機(jī): useCapture參數(shù)設(shè)置為true時,在捕獲階段執(zhí)行監(jiān)聽函數(shù);設(shè)置為false時,在冒泡階段執(zhí)行監(jiān)聽函數(shù)。

通過以下例子,我們可以更好地理解事件處理階段的執(zhí)行時機(jī):

<div id='div'>
    <p id='p'>
        <span id='span'>點(diǎn)擊我!</span>
    </p >
</div>

設(shè)置點(diǎn)擊事件:

var div = document.getElementById('div');
var p = document.getElementById('p');

function onClickFn (event) {
    var tagName = event.currentTarget.tagName;
    var phase = event.eventPhase;
    console.log(tagName, phase);
}

div.addEventListener('click', onClickFn, false);
p.addEventListener('click', onClickFn, false);

點(diǎn)擊"點(diǎn)擊我!"后,輸出如下:

P 3
DIV 3

我們可以看到,pdiv都在冒泡階段響應(yīng)了事件,由于冒泡的特性,內(nèi)部的p先于外層的div作出了響應(yīng)。

如果我們將useCapture參數(shù)改為true

div.addEventListener('click', onClickFn, true);
p.addEventListener('click', onClickFn, true);

輸出如下:

DIV 1
P 1

兩者在捕獲階段響應(yīng)事件,因此div會先于p作出響應(yīng)。

IE事件模型

IE事件模型共有兩個過程:

  • 事件處理階段:事件到達(dá)目標(biāo)元素, 觸發(fā)目標(biāo)元素的監(jiān)聽函數(shù)。
  • 事件冒泡階段:事件從目標(biāo)元素冒泡到document, 依次檢查經(jīng)過的節(jié)點(diǎn)是否綁定了事件監(jiān)聽函數(shù),如果有則執(zhí)行

事件綁定監(jiān)聽函數(shù)的方式如下:

attachEvent(eventType, handler)

事件移除監(jiān)聽函數(shù)的方式如下:

detachEvent(eventType, handler)

舉個例子:

var btn = document.getElementById('.btn');
btn.attachEvent(‘onclick’, showMessage);
btn.detachEvent(‘onclick’, showMessage);

總結(jié)

在本篇博客中,我們一起探索了JavaScript事件模型的四大概念:事件與事件流、原始事件模型、標(biāo)準(zhǔn)事件模型、IE事件模型。JavaScript是一門非常強(qiáng)大且廣泛應(yīng)用的編程語言。掌握了這些基本的語法和概念,你已經(jīng)具備了入門JavaScript編程的基礎(chǔ)。未來,你將能夠創(chuàng)建更加交互性的網(wǎng)頁,實(shí)現(xiàn)更多驚艷的動態(tài)效果,甚至搭建出屬于自己的Web應(yīng)用。但這只是一個開始,還有許多更深入的主題等待你去探索。
后續(xù)我們這個前端專欄還會講述作用域、事件模型、內(nèi)置對象、垃圾回收、js算法技巧、Vue入門實(shí)戰(zhàn)、React實(shí)戰(zhàn)、前端面試題等等文章,如果您感興趣的話,歡迎點(diǎn)贊三連并關(guān)注我以及我的前端專欄,我們下期文章再見。文章來源地址http://www.zghlxwxcb.cn/news/detail-648336.html

到了這里,關(guān)于【前端|Javascript第4篇】詳解Javascript的事件模型:小白也能輕松搞懂!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端輪播圖最簡單實(shí)現(xiàn)(小白也能學(xué)會)

    前端輪播圖最簡單實(shí)現(xiàn)(小白也能學(xué)會)

    輪播圖大家肯定都不陌生,因?yàn)檫@是前端最為常見的一個功能,現(xiàn)在隨著框架和一些插件的興起,很少人會去原生的去寫輪播圖,所以今天帶大家寫一下原生的輪播圖來熟悉一下 最為主要的就是得知道這張圖片的寬度,因?yàn)槊恳淮我苿拥木嚯x就是這張圖片的寬度,但是寬度我

    2024年02月04日
    瀏覽(18)
  • .Net也能輕松接入AI模型!

    .Net也能輕松接入AI模型!

    ML.Net?-?開源的跨平臺機(jī)器學(xué)習(xí)框架 支持CPU/GPU訓(xùn)練 輕松簡潔的預(yù)測代碼 可擴(kuò)展其他的機(jī)器學(xué)習(xí)平臺 跨平臺 Visual?Studio默認(rèn)安裝了Model?Builder插件,可以很快地進(jìn)行一些通用模型類型的訓(xùn)練和部署,提高接入機(jī)器學(xué)習(xí)的開發(fā)效率 通過非常簡單地 右鍵項目-添加-機(jī)器學(xué)習(xí)模型

    2024年02月06日
    瀏覽(23)
  • 前端小白也能懂!實(shí)時消息小紅點(diǎn)學(xué)會使用 RabbitMQ 推送消息

    前端小白也能懂!實(shí)時消息小紅點(diǎn)學(xué)會使用 RabbitMQ 推送消息

    在Web應(yīng)用程序中使用實(shí)時消息推送可以為用戶提供更好的體驗(yàn)。例如,在聊天室或社交媒體上,用戶會看到其他用戶發(fā)送的消息的實(shí)時更新,這提高了用戶參與感,并為用戶提供了方便。實(shí)時消息推送技術(shù)在許多場景中都是必不可少的,比如在線游戲,實(shí)時股票報價等。 實(shí)時

    2024年02月08日
    瀏覽(22)
  • 小白也能看懂的 AUC 詳解

    小白也能看懂的 AUC 詳解

    上篇文章 小白也能看懂的 ROC 曲線詳解 介紹了 ROC 曲線。本文介紹 AUC。AUC 的全名為 A rea U nder the ROC C urve,即 ROC 曲線下的面積,最大為 1。 根據(jù) ROC 和 AUC 的關(guān)系,我們可以得到如下結(jié)論 ROC 曲線接近左上角 --- AUC 接近 1:模型預(yù)測準(zhǔn)確率很高 ROC 曲線略高于基準(zhǔn)線 --- AUC 略大

    2024年02月06日
    瀏覽(22)
  • 小白也能微調(diào)大模型:LLaMA-Factory使用心得

    小白也能微調(diào)大模型:LLaMA-Factory使用心得

    大模型火了之后,相信不少人都在嘗試將預(yù)訓(xùn)練大模型應(yīng)用到自己的場景上,希望得到一個垂類專家,而不是通用大模型。 目前的思路,一是RAG(retrieval augmented generation),在模型的輸入prompt中加入盡可能多的“目標(biāo)領(lǐng)域”的相關(guān)知識,引導(dǎo)模型在生成時盡量靠攏目標(biāo)領(lǐng)域,運(yùn)

    2024年04月13日
    瀏覽(32)
  • TCP/IP協(xié)議族之TCP、UDP協(xié)議詳解(小白也能看懂)

    TCP/IP協(xié)議族之TCP、UDP協(xié)議詳解(小白也能看懂)

    ? ? ? ? 在進(jìn)行網(wǎng)絡(luò)編程之前,我們必須要對網(wǎng)絡(luò)通信的基礎(chǔ)知識有個大概的框架,TCP/IP協(xié)議族涉及到多種網(wǎng)絡(luò)協(xié)議,一般說TCP/IP協(xié)議,它不是指某一個具體的網(wǎng)絡(luò)協(xié)議,而是一個協(xié)議族。本篇章主要針對IP協(xié)議、TCP和UDP協(xié)議記錄總結(jié)。 OSI七層參考模型是國際標(biāo)準(zhǔn)化組織(

    2024年02月02日
    瀏覽(27)
  • 學(xué)習(xí)筆記|大模型優(yōu)質(zhì)Prompt開發(fā)與應(yīng)用課(二)|第四節(jié):大模型幫你寫代碼,小白也能做程序

    學(xué)習(xí)筆記|大模型優(yōu)質(zhì)Prompt開發(fā)與應(yīng)用課(二)|第四節(jié):大模型幫你寫代碼,小白也能做程序

    GT│飛槳開發(fā)者技術(shù)專家 研發(fā)資源持續(xù)投入是企業(yè)為了獲取核心技術(shù).提升競爭力而進(jìn)行的必要投資,同時也是企業(yè)實(shí)現(xiàn)長期發(fā)展、保持核心競爭力的關(guān)鍵因素。 在大型企業(yè)當(dāng)中,人力成本占研發(fā)投入通常超50%,互聯(lián)網(wǎng)頭部企業(yè)研發(fā)薪資通常在20k以上,可以看到技術(shù)性人才非

    2024年02月15日
    瀏覽(49)
  • YOLOv8預(yù)測參數(shù)詳解(全面詳細(xì)、重點(diǎn)突出、大白話闡述小白也能看懂)

    YOLOv8預(yù)測參數(shù)詳解(全面詳細(xì)、重點(diǎn)突出、大白話闡述小白也能看懂)

    YOLOv8現(xiàn)在可以接受輸入很多,如下表所示。包括圖像、URL、PIL圖像、OpenCV、NumPy數(shù)組、Torch張量、CSV文件、視頻、目錄、通配符、YouTube視頻和視頻流。表格?指示了每個輸入源是否可以在流模式下使用,并給出了每個輸入源使用流模式的示例參數(shù) 預(yù)測參數(shù) Key Value Description s

    2024年02月11日
    瀏覽(31)
  • 【計算機(jī)視覺】YOLOv8參數(shù)詳解(全面詳細(xì)、重點(diǎn)突出、大白話闡述小白也能看懂)

    comments description keywords true Master YOLOv8 settings and hyperparameters for improved model performance. Learn to use YOLO CLI commands, adjust training settings, and optimize YOLO tasks modes. YOLOv8, settings, hyperparameters, YOLO CLI commands, YOLO tasks, YOLO modes, Ultralytics documentation, model optimization, YOLOv8 training YOLO 設(shè)置和超參數(shù)

    2024年02月05日
    瀏覽(31)
  • 學(xué)習(xí)javascript,前端知識精講,助力你輕松掌握

    學(xué)習(xí)javascript,前端知識精講,助力你輕松掌握

    ?? 歡迎大家來到景天科技苑?? ???? 養(yǎng)成好習(xí)慣,先贊后看哦~???? 所屬專欄: 前端泛海 景天的主頁: 景天科技苑 JavaScript在1995年誕生了; 由Netscape公司,布蘭登·艾奇(Brendan Eich)發(fā)明的ECMAScript客戶端腳本語言; 主要應(yīng)用在瀏覽器,在當(dāng)時卻不溫不火. 直到后來Netscape與S

    2024年03月15日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包