JavaScript 阻止事件默認(rèn)行為的幾種方法
默認(rèn)行為
在JavaScript中,事件默認(rèn)行為是指在特定的事件發(fā)生時(shí)瀏覽器自動(dòng)執(zhí)行的操作。例如,當(dāng)用戶單擊一個(gè)鏈接時(shí),瀏覽器會(huì)自動(dòng)跳轉(zhuǎn)到鏈接的URL頁(yè)面;form 元素 的 action 屬性值表單內(nèi)容要提交的地址,而用戶點(diǎn)擊表單元素中嵌套的提交按鈕時(shí),就會(huì)有一個(gè)默認(rèn)的提交操作。
而有時(shí)候,不需要這些默認(rèn)行為。比如,我們提交表單希望ajax 異步發(fā)送到服務(wù)器,不需要form 的默認(rèn)事件提交跳轉(zhuǎn)行為。
一句話說就是 html 元素自帶的行為。
阻止默認(rèn)行為
1. 使用event.preventDefault()方法:
這是阻止事件默認(rèn)行為最常用的方法之一。當(dāng)事件被觸發(fā)時(shí),可以調(diào)用event.preventDefault()方法來(lái)阻止瀏覽器執(zhí)行其默認(rèn)行為。例如,在單擊鏈接時(shí),可以通過以下方式阻止瀏覽器跳轉(zhuǎn)到鏈接的URL頁(yè)面:
document.querySelector('a').addEventListener('click', function(event) {
event.preventDefault();
});2. 使用return false:
在某些情況下,可以在事件處理程序中使用return false來(lái)阻止事件默認(rèn)行為。這種方式通常用于內(nèi)聯(lián)事件處理程序,例如onclick屬性。例如,以下代碼將阻止單擊鏈接時(shí)的默認(rèn)行為:
注意:如果寫在 jQuery 中,能夠同時(shí)阻止默認(rèn)行為和阻止冒泡。
<a href="#" rel="external nofollow" onclick="return false;">點(diǎn)擊我不會(huì)跳轉(zhuǎn)</a>
3. 使用event.returnValue屬性:
在舊版本的IE瀏覽器中,可以使用event.returnValue屬性來(lái)阻止事件默認(rèn)行為(現(xiàn)在很多瀏覽器也支持)。將event.returnValue設(shè)置為false可以阻止默認(rèn)行為的執(zhí)行。例如:
document.querySelector('a').attachEvent('onclick', function(event) {
event.returnValue = false;
});4. 使用event.stopPropagation()方法(僅阻止事件傳播):
阻止事件傳播。 event.stopPropagation()方法用于阻止事件的進(jìn)一步傳播,而不是直接阻止事件的默認(rèn)行為。它可以用于停止事件冒泡到父元素或其他事件監(jiān)聽器。例如:
document.querySelector('.child').addEventListener('click', function(event) {
event.stopPropagation();
});5. 使用 cancelable 屬性
查看狀態(tài)。 該屬性表示事件是否可以取消,返回一個(gè)布爾值。該屬性是只讀屬性。true 表示可以取消。
<a id="test" rel="external nofollow" rel="external nofollow" >百度</a>
<script>
let test = document.getElementById('test');
test.onclick = function (e) {
// 可以取消事件的默認(rèn)行為
console.log(e.cancelable)
}
</script>6. defaultPrevented 方法
查看狀態(tài)。 也是 event的一個(gè)屬性,表示默認(rèn)行為是否被阻止,true 表示被阻止。
<a id="test" rel="external nofollow" rel="external nofollow" >百度</a>
<script>
let test = document.getElementById('test');
test.onclick = function (e) {
e.preventDefault()
console.log(e.defaultPrevented) // true
}
</script>需要注意的是,不同的事件有不同的默認(rèn)行為,因此阻止默認(rèn)行為的方法可能會(huì)有所不同。一些常見的事件默認(rèn)行為包括表單提交、鏈接點(diǎn)擊、表單元素的鍵盤輸入等。
總結(jié)起來(lái),使用event.preventDefault()方法是最常見和推薦的阻止事件默認(rèn)行為的方法。其他方法如return false和event.returnValue屬性在特定情況下可能有用,但不如event.preventDefault()方法靈活和通用。另外,event.stopPropagation()方法用于阻止事件傳播,而不是直接阻止事件的默認(rèn)行為。
到此這篇關(guān)于JavaScript 阻止事件默認(rèn)行為的幾種方法的文章就介紹到這了,更多相關(guān)JavaScript 阻止默認(rèn)行為內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實(shí)現(xiàn)將圖片地址轉(zhuǎn)成文件流并上傳
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)將圖片地址轉(zhuǎn)成文件流并上傳,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
深入理解requireJS-實(shí)現(xiàn)一個(gè)簡(jiǎn)單的模塊加載器
本篇文章主要介紹了深入理解requireJS-實(shí)現(xiàn)一個(gè)簡(jiǎn)單的模塊加載器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-01-01
利用transition實(shí)現(xiàn)文字上下抖動(dòng)的效果
這篇文章主要給大家介紹了利用transition屬性如何實(shí)現(xiàn)文字上下抖動(dòng)的效果,文中給出了詳細(xì)的介紹和完整的實(shí)例代碼,相信對(duì)大家的學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2017-01-01
基于JavaScript實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建表格和增加表格行數(shù)
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建表格和增加表格行數(shù)的相關(guān)資料,需要的朋友可以參考下2015-12-12
js實(shí)現(xiàn)樓層效果的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)樓層效果的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-07-07
uni-app項(xiàng)目實(shí)現(xiàn)多服務(wù)環(huán)境切換的詳細(xì)教程
uni-app能開發(fā)小程序/H5/APP(安卓/iOS),重要的是對(duì)前端開發(fā)友好,自帶的IDE可視化的運(yùn)行和打包也讓開發(fā)體驗(yàn)也非常棒,最近在和服務(wù)端聯(lián)調(diào)的時(shí)候發(fā)現(xiàn)服務(wù)端接口問題較多,好幾個(gè)接口調(diào)了一下午還是報(bào)錯(cuò),所以本文給大家記錄一下uni-app項(xiàng)目實(shí)現(xiàn)多服務(wù)環(huán)境切換的詳細(xì)教程2025-06-06

