js阻止冒泡和默認(rèn)事件(默認(rèn)行為)詳解
本文實(shí)例為大家分享了js阻止冒泡和默認(rèn)事件方法,供大家參考,具體內(nèi)容如下
阻止冒泡。冒泡簡(jiǎn)單的舉例來說,兒子知道了一個(gè)秘密消息,它告訴了爸爸,爸爸知道了又告訴了爺爺,一級(jí)級(jí)傳遞從而引起事件的混亂,而阻止冒泡就是不讓兒子告訴爸爸,爸爸自然不會(huì)告訴爺爺了。下面的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>
我所實(shí)現(xiàn)的效果是:點(diǎn)擊按鈕btn讓box顯示,而點(diǎn)擊其他地方則讓box消失。
如果我不阻止冒泡的話,那么首先btn會(huì)觸發(fā)點(diǎn)擊時(shí)間,讓盒子顯示,但是由于box是包含在document中的,所以會(huì)向上冒泡又觸發(fā)document的點(diǎn)擊事件,盒子又消失。這個(gè)事件的執(zhí)行順序可以在不同的點(diǎn)擊事件中使用alert來驗(yàn)證。關(guān)于cancelBubble的兼容性處理在高版本的chrome和firefox中已經(jīng)不需要兼容處理了,直接使用oEvent.cancelBubble = true 即可。下面的阻止瀏覽器事件的兼容性處理在高版本瀏覽器中同樣不需要。
默認(rèn)事件。即瀏覽器本身具備的功能。
function preventDefa(e){ if(window.event){ //IE中阻止函數(shù)器默認(rèn)動(dòng)作的方式 window.event.returnValue = false; } else{ //阻止默認(rèn)瀏覽器動(dòng)作(W3C) e.preventDefault(); } }
這種是兼容性寫法,但是如果你只需要支持高版本瀏覽器的話,那么如上文一樣,一句話即可。
btn.onclick = function (){ return false; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript隊(duì)列、優(yōu)先隊(duì)列與循環(huán)隊(duì)列
這篇文章主要為大家詳細(xì)介紹了JavaScript隊(duì)列、優(yōu)先隊(duì)列與循環(huán)隊(duì)列的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11JavaScript實(shí)現(xiàn)日期格式化詳細(xì)實(shí)例
這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)日期格式化的相關(guān)資料,JavaScript中的日期對(duì)象提供了許多方法和屬性,可以通過它們來進(jìn)行日期的格式化,需要的朋友可以參考下2023-09-09js實(shí)現(xiàn)目錄鏈接,內(nèi)容跟著目錄滾動(dòng)顯示的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄猨s實(shí)現(xiàn)目錄鏈接,內(nèi)容跟著目錄滾動(dòng)顯示的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10javascript中日期轉(zhuǎn)換成時(shí)間戳的小例子
javascript中日期轉(zhuǎn)換成時(shí)間戳的小例子,需要的朋友可以參考一下2013-03-03解析img圖片沒找到onerror事件 Stack overflow at line: 0
本篇文章主要介紹了img圖片沒找到onerror事件 Stack overflow at line: 0 需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12JavaScript中String對(duì)象的使用方法以及實(shí)例
這篇文章主要給大家介紹了關(guān)于JavaScript中String對(duì)象的使用方法以及實(shí)例的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),方便開發(fā)者在JavaScript開發(fā)中更好地處理字符串,需要的朋友可以參考下2022-04-04