JavaScript阻止事件默認(rèn)行為的不同方法
一、什么是默認(rèn)行為?
默認(rèn)行為是指HTML元素自帶的行為。例如,點擊一個<a>元素通常會導(dǎo)致頁面跳轉(zhuǎn),提交一個<form>元素會導(dǎo)致頁面刷新。這些行為在某些情況下可能不是我們想要的,因此需要阻止它們。
二、阻止默認(rèn)行為的方法
(一)preventDefault方法
preventDefault方法是DOM中最常見且標(biāo)準(zhǔn)的阻止默認(rèn)行為的方式。它可以直接調(diào)用,無需返回值。
<a id="test" >百度</a>
<script>
var test = document.getElementById("test");
test.onclick = function(event) {
event.preventDefault();
};
</script>
在上面的代碼中,點擊鏈接時不會跳轉(zhuǎn)到百度,因為preventDefault方法阻止了鏈接的默認(rèn)跳轉(zhuǎn)行為。
(二)returnValue屬性
returnValue屬性是event對象上的一個可讀寫屬性,默認(rèn)值為true。將其設(shè)置為false可以取消事件的默認(rèn)行為。這種方法最早在IE中實現(xiàn),但現(xiàn)在大多數(shù)瀏覽器都支持。
var test = document.getElementById("test");
test.onclick = function(event) {
event.returnValue = false;
};
(三)return false
在事件處理函數(shù)中返回false也可以阻止默認(rèn)行為。這種方法在原生JavaScript中只能阻止默認(rèn)行為,但在jQuery中可以同時阻止默認(rèn)行為和事件冒泡。
var test = document.getElementById("test");
test.onclick = function() {
return false;
};
(四)defaultPrevented屬性
defaultPrevented屬性用于檢查默認(rèn)行為是否已被阻止。它返回一個布爾值,true表示默認(rèn)行為已被阻止,false表示未被阻止。
var test = document.getElementById("test");
test.onclick = function(event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
test.innerHTML = event.defaultPrevented;
};
在上面的代碼中,點擊鏈接時會阻止默認(rèn)行為,并將defaultPrevented的值顯示在頁面上。
(五)cancelable 屬性
首先要介紹的是 cancelable 屬性,該屬性返回一個布爾值,表示事件是否可以取消。
該屬性為只讀屬性。返回 true 時,表示可以取消。否則,表示不可取消。
<a id="test" >百度</a>
var test = document.getElementById("test");
test.onclick = function (event) {
test.innerHTML = event.cancelable; // true
}
在上面的代碼中,我們?yōu)?a 元素綁定了一個點擊事件,點擊之后通過 event 對象的 cancelable 屬性來查看該元素的默認(rèn)行為是否能阻止。
三、總結(jié)
在實際開發(fā)中,建議優(yōu)先使用preventDefault,因為它是最標(biāo)準(zhǔn)和兼容性最好的方法。希望本文能幫助你更好地理解和應(yīng)用這些方法。
以上就是JavaScript阻止事件默認(rèn)行為的不同方法的詳細(xì)內(nèi)容,更多關(guān)于JavaScript阻止事件默認(rèn)行為的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
js select下拉聯(lián)動 更具級聯(lián)性!
這篇文章主要為大家詳細(xì)介紹了js select下拉聯(lián)動的相關(guān)資料,更具級聯(lián)性!文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
JS 實現(xiàn)完美include載入實現(xiàn)代碼
在寫這個之前在網(wǎng)上搜索了些資料,發(fā)現(xiàn)以前寫的include都存在2個問題,這也是include需要解決的比較重要的2個問題。2010-08-08
移動端H5開發(fā) Turn.js實現(xiàn)很棒的翻書效果
這篇文章主要為大家詳細(xì)介紹了Turn.js實現(xiàn)很棒的翻書效果,對Turn.js翻書效果的實現(xiàn)進(jìn)行總結(jié),感興趣的小伙伴們可以參考一下2016-06-06
JS點擊圖片彈出文件選擇框并覆蓋原圖功能的實現(xiàn)代碼
這篇文章主要介紹了JS點擊圖片彈出文件選擇框并覆蓋原圖功能的實現(xiàn)代碼,需要的朋友可以參考下2017-08-08
.NET微信公眾號開發(fā)之創(chuàng)建自定義菜單
這篇文章主要介紹了.NET微信公眾號開發(fā)之創(chuàng)建自定義菜單的相關(guān)資料,需要的朋友可以參考下2015-07-07
javascript事件的綁定基礎(chǔ)實例講解(34)
這篇文章主要為大家詳細(xì)介紹了javascript事件的綁定基礎(chǔ)實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Javascript+CSS3實現(xiàn)進(jìn)度條效果
本篇文章主要介紹Javascript+CSS3實現(xiàn)進(jìn)度條效果,可以實現(xiàn)給用戶一個等待的過程,有需要的可以了解一下。2016-10-10
select2 ajax 設(shè)置默認(rèn)值,初始值的方法
今天小編就為大家分享一篇select2 ajax 設(shè)置默認(rèn)值,初始值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

