溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js 停止事件冒泡 阻止瀏覽器的默認行為

發(fā)布時間:2020-07-02 20:32:08 來源:網(wǎng)絡 閱讀:667 作者:蓓蕾心晴 欄目:開發(fā)技術

在前端開發(fā)工作中,由于瀏覽器兼容性等問題,我們會經(jīng)常用到“停止事件冒泡”和“阻止瀏覽器默認行為”。

瀏覽器默認行為:

在form中按回車鍵就會提交表單;單擊鼠標右鍵就會彈出context menu.

a標簽

1..停止事件冒泡

JavaScript代碼


1 //如果提供了事件對象,則這是一個非IE瀏覽器2 if ( e && e.stopPropagation )3 //因此它支持W3C的stopPropagation()方法4 e.stopPropagation(); 
5 else6 //否則,我們需要使用IE的方式來取消事件冒泡 7 window.event.cancelBubble = true;8 return false;

2.阻止瀏覽器的默認行為

JavaScript代碼

 1 element.|| window.event;   
 4  5 //如果提供了事件對象,則這是一個非IE瀏覽器  6  7 if (event&& event.preventDefault) { 8  9   //阻止默認瀏覽器動作(W3C) 10 11         event.preventDefault();  
12 13     } else { 
14 15     //IE中阻止函數(shù)器默認動作的方式 16 17         window.event.returnValue = false;  
18 19     }  
20 21   //event.preventDefault?event.preventDefault():(event.returnValue = false);  22 23 }

或者直接返回false:

element.onclick = function(event) {  
  //...  
  return false;  
}

但是在使用return false時必須注意:
1、jQuery有自己的事件處理層,也對處理程序做了封裝,如果事件處理程序返回false,事件冒泡和瀏覽器默認事件都會被阻止。
2、使用原生javaScript,在事件處理程序中返回false只會阻止瀏覽器默認行為,而事件冒泡依然存在。
3、瀏覽器默認行為和事件冒泡是相互獨立的。阻止事件冒泡不會影響默認行為,反之亦然。

注意:
有一些瀏覽器行為是在事件處理程序執(zhí)行前發(fā)生的,也就是說這些默認行為是無法取消的,如:在大部分瀏覽器上鼠標移到一個超鏈接上超鏈接的樣式會發(fā)生改變,這個動作是發(fā)生在focus事件之前的,是focus事件處理程序中無法取消的。

摘自:http://blog.csdn.net/jquery_qq/article/details/51568816

http://www.cnblogs.com/yuzhongwusan/archive/2008/12/27/1363417.html


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI