Vue中addEventListener()?監(jiān)聽(tīng)事件案例講解
一、語(yǔ)法
element.addEventListener(event, function, useCapture);
第一個(gè)參數(shù):事件的類型 (如 “
click
” 或 “mousedown
”),詳參【事件類型】;第二個(gè)參數(shù):事件觸發(fā)后調(diào)用的函數(shù);
第三個(gè)參數(shù):(布爾值,可選)用于描述事件是冒泡還是捕獲;
注意:不要使用 “on
” 前綴。 例如,使用 “click” ,而不是使用 “onclick”。
可以使用函數(shù)名,來(lái)引用外部函數(shù):
element.addEventListener("click", function(){ alert("Hello World!"); }); element.addEventListener("click", myFunction); function myFunction() { alert ("Hello World!"); }
向 Window
對(duì)象添加事件句柄:
window.addEventListener("resize", function(){ document.getElementById("demo").innerHTML = sometext; });
傳遞參數(shù)
當(dāng)傳遞參數(shù)值時(shí),使用"匿名函數(shù)"調(diào)用帶參數(shù)的函數(shù):
var p1 = 5; var p2 = 7; document.getElementById("myBtn").addEventListener("click", function() { myFunction(p1, p2); }); function myFunction(a, b) { var result = a * b; document.getElementById("demo").innerHTML = result; }
二、事件冒泡或事件捕獲?
事件傳遞有兩種方式:冒泡與捕獲。
事件傳遞定義了元素事件觸發(fā)的順序。 如果將 <p>
元素插入到 <div>
元素中,用戶點(diǎn)擊 <p>
元素, 哪個(gè)元素的 “click” 事件先被觸發(fā)呢?
在 冒泡 中,內(nèi)部元素的事件會(huì)先被觸發(fā),然后再觸發(fā)外部元素,即: <p>
元素的點(diǎn)擊事件先觸發(fā),然后會(huì)觸發(fā) <div>
元素的點(diǎn)擊事件。
在 捕獲 中,外部元素的事件會(huì)先被觸發(fā),然后才會(huì)觸發(fā)內(nèi)部元素的事件,即: <div>
元素的點(diǎn)擊事件先觸發(fā) ,然后再觸發(fā) <p>
元素的點(diǎn)擊事件。
addEventListener()
方法可以指定 “useCapture
” 參數(shù)來(lái)設(shè)置傳遞類型:
addEventListener(event, function, useCapture);
默認(rèn)值為 false
, 即冒泡傳遞,當(dāng)值為 true
時(shí), 事件使用捕獲傳遞。
document.getElementById("myDiv").addEventListener("click", myFunction, true);
removeEventListener() 方法
removeEventListener()
方法移除由 addEventListener()
方法添加的事件句柄:
element.removeEventListener("mousemove", myFunction);
瀏覽器兼容處理
var x = document.getElementById("myBtn"); if (x.addEventListener) { // 所有主流瀏覽器,除了 IE 8 及更早版本 x.addEventListener("click", myFunction); } else if (x.attachEvent) { // IE 8 及更早版本 x.attachEvent("onclick", myFunction); }
IE 8
及更早 IE 版本,Opera 7.0
及其更早版本不支持 addEventListener()
和 removeEventListener()
方法。但是,對(duì)于這類瀏覽器版本可以使用 detachEvent()
方法來(lái)移除事件句柄:
element.attachEvent(event, function); element.detachEvent(event, function);
三、拓展閱讀
《Vue進(jìn)階(七十九):使用postMessage來(lái)實(shí)現(xiàn)父子通信跨域》
《Vue進(jìn)階(九十二):窗口間通信postMessage》
《Vue進(jìn)階(八十六):VUE中iframe結(jié)合window.postMessage實(shí)現(xiàn)跨域通信》
補(bǔ)充介紹:
addEventListener()事件監(jiān)聽(tīng)
addEventListener()方法將事件處理程序附加到指定的元素。
addEventListener()方法將事件處理程序附加到元素,而不覆蓋現(xiàn)有的事件處理程序。
您可以向一個(gè)元素添加許多事件處理程序。您可以向一個(gè)元素添加許多相同類型的事件處理程序,即兩個(gè)“單擊”事件。
您可以將事件偵聽(tīng)器添加到任何DOM對(duì)象,而不僅僅是HTML元素。即window對(duì)象。
addEventListener()方法可以更容易地控制事件對(duì)冒泡的反應(yīng)。
使用addEventListener()方法時(shí),JavaScript與HTML標(biāo)記分離,以提高可讀性,
并允許您添加事件偵聽(tīng)器,即使您不控制HTML標(biāo)記也是如此。
您可以使用removeEventListener()方法輕松刪除事件偵聽(tīng)器。
到此這篇關(guān)于Vue中addEventListener() 監(jiān)聽(tīng)事件的文章就介紹到這了,更多相關(guān)vue addEventListener監(jiān)聽(tīng)事件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解vue微信網(wǎng)頁(yè)授權(quán)最終解決方案
這篇文章主要介紹了 詳解vue微信網(wǎng)頁(yè)授權(quán)最終解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06vue項(xiàng)目中如何調(diào)用多個(gè)不同的ip接口
這篇文章主要介紹了vue項(xiàng)目中如何調(diào)用多個(gè)不同的ip接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08一個(gè)vue組件庫(kù)發(fā)布到npm的完整實(shí)現(xiàn)過(guò)程
工作的時(shí)候總是使用別人的npm包,然而我有時(shí)心底會(huì)好奇自己如何發(fā)布一個(gè)npm包呢,什么時(shí)候自己的包能夠被很多人喜歡并使用呢,下面這篇文章主要給大家介紹了關(guān)于一個(gè)vue組件庫(kù)發(fā)布到npm的相關(guān)資料,需要的朋友可以參考下2022-03-03vue播放flv、m3u8視頻流(監(jiān)控)的方法實(shí)例
隨著前端大屏頁(yè)面的逐漸壯大,客戶的...其中實(shí)時(shí)播放監(jiān)控的需求逐步增加,視頻流格式也是有很多種,用到最多的.flv、.m3u8,下面這篇文章主要給大家介紹了關(guān)于vue播放flv、m3u8視頻流(監(jiān)控)的相關(guān)資料,需要的朋友可以參考下2023-04-04antdv的table因數(shù)據(jù)量過(guò)大導(dǎo)致的卡頓問(wèn)題及解決
這篇文章主要介紹了antdv的table因數(shù)據(jù)量過(guò)大導(dǎo)致的卡頓問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11vue3.0 vue.config.js 配置基礎(chǔ)的路徑問(wèn)題
這篇文章主要介紹了vue3.0 vue.config.js 配置基礎(chǔ)的路徑問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue 自動(dòng)檢測(cè)手機(jī)端響應(yīng)式布局的五種實(shí)現(xiàn)
本文主要介紹了vue自動(dòng)檢測(cè)手機(jī)端響應(yīng)式布局,可以通過(guò)結(jié)合 CSS 媒體查詢、Vue 的動(dòng)態(tài)數(shù)據(jù)綁定、適當(dāng)?shù)牡谌綆?kù)、PostCSS 插件以及正確的視口設(shè)置實(shí)現(xiàn),感興趣的可以了解一下2024-07-07