js阻止冒泡和默認事件(默認行為)詳解
本文實例為大家分享了js阻止冒泡和默認事件方法,供大家參考,具體內(nèi)容如下
阻止冒泡。冒泡簡單的舉例來說,兒子知道了一個秘密消息,它告訴了爸爸,爸爸知道了又告訴了爺爺,一級級傳遞從而引起事件的混亂,而阻止冒泡就是不讓兒子告訴爸爸,爸爸自然不會告訴爺爺了。下面的domo就是很好的例子。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#box {
width: 300px;
height: 300px;
background: red;
display: none;
}
</style>
<script type="text/javascript">
window.onload = function() {
var btn = document.getElementById('btn');
var box = document.getElementById('box');
btn.onclick = function(ev) {
var oEvent = ev || event;
box.style.display = 'block';
//oEvent.cancelBubble = true;//高版本瀏覽器
stopBubble(oEvent);
//在低版本的chrome和firefox瀏覽器中需要兼容性處理
//高版本chrome和firefox瀏覽器直接使用上面這行代碼即可
}
document.onclick = function() {
box.style.display = 'none';
}
}
//阻止冒泡事件的兼容性處理
function stopBubble(e) {
if(e && e.stopPropagation) { //非IE
e.stopPropagation();
} else { //IE
window.event.cancelBubble = true;
}
}
</script>
</head>
<body>
<input type="button" id="btn" value="語言" />
<div id="box"></div>
</body>
</html>
我所實現(xiàn)的效果是:點擊按鈕btn讓box顯示,而點擊其他地方則讓box消失。
如果我不阻止冒泡的話,那么首先btn會觸發(fā)點擊時間,讓盒子顯示,但是由于box是包含在document中的,所以會向上冒泡又觸發(fā)document的點擊事件,盒子又消失。這個事件的執(zhí)行順序可以在不同的點擊事件中使用alert來驗證。關于cancelBubble的兼容性處理在高版本的chrome和firefox中已經(jīng)不需要兼容處理了,直接使用oEvent.cancelBubble = true 即可。下面的阻止瀏覽器事件的兼容性處理在高版本瀏覽器中同樣不需要。
默認事件。即瀏覽器本身具備的功能。
function preventDefa(e){
if(window.event){
//IE中阻止函數(shù)器默認動作的方式
window.event.returnValue = false;
}
else{
//阻止默認瀏覽器動作(W3C)
e.preventDefault();
}
}
這種是兼容性寫法,但是如果你只需要支持高版本瀏覽器的話,那么如上文一樣,一句話即可。
btn.onclick = function (){
return false;
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
JavaScript隊列、優(yōu)先隊列與循環(huán)隊列
這篇文章主要為大家詳細介紹了JavaScript隊列、優(yōu)先隊列與循環(huán)隊列的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11
js實現(xiàn)目錄鏈接,內(nèi)容跟著目錄滾動顯示的簡單實例
下面小編就為大家?guī)硪黄猨s實現(xiàn)目錄鏈接,內(nèi)容跟著目錄滾動顯示的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
javascript中日期轉(zhuǎn)換成時間戳的小例子
javascript中日期轉(zhuǎn)換成時間戳的小例子,需要的朋友可以參考一下2013-03-03
解析img圖片沒找到onerror事件 Stack overflow at line: 0
本篇文章主要介紹了img圖片沒找到onerror事件 Stack overflow at line: 0 需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12

