淺談JavaScript的事件
1、事件流
事件流描述的是從頁面中接收事件的順序。但是IE提出的是冒泡流,而Netscape Communicator提出的是捕獲流。
JavaScript事件流
2、事件冒泡(event bubbling)
事件開始由最具體的元素(嵌套層次最深的那個(gè)節(jié)點(diǎn))接收,然后逐級(jí)向上傳播為較不為具體的節(jié)點(diǎn)(文檔)。如下:
<html>
<head>
<title>事件冒泡</title>
</head>
<body>
<div id="myDiv">點(diǎn)擊我</div>
</body>
</html>
window.onload = function(){
var obj = document.getElementById("test");
obj.onclick = function(){
alert(this.tagName);
};
document.body.onclick = function(){
alert(this.tagName);
};
document.documentElement.onclick = function(){
alert(this.tagName);
};
document.onclick = function(){
alert("document");
};
window.onclick = function(){
alert("window");
}
};
事件傳播順序:div——>body——>html——>document
注意:
現(xiàn)代所有瀏覽器都支持冒泡事件,但實(shí)現(xiàn)還有一些差別。IE5.5及更早版本中的事件冒泡會(huì)直接從body跳到document(不執(zhí)行html)。Firefox、Chrome和Safari則將事件一直冒泡到window對(duì)象。
3、停止事件冒泡和取消默認(rèn)事件
a. 獲取事件對(duì)象
function getEvent(event) {
// window.event IE
// event 非IE
return event || window.event;
}
b 功能:停止事件冒泡
function stopBubble(e) {
// 如果提供了事件對(duì)象,則這是一個(gè)非IE瀏覽器
if ( e && e.stopPropagation ) {
// 因此它支持W3C的stopPropagation()方法
e.stopPropagation();
} else {
// 否則,我們需要使用IE的方式來取消事件冒泡
window.event.cancelBubble = true;
}
}
c. 阻止瀏覽器的默認(rèn)行為
function stopDefault( e ) {
// 阻止默認(rèn)瀏覽器動(dòng)作(W3C)
if ( e && e.preventDefault ) {
e.preventDefault();
} else {
// IE中阻止函數(shù)器默認(rèn)動(dòng)作的方式
window.event.returnValue = false;
}
return false;
}
- javascript 鼠標(biāo)事件總結(jié)
- javascript 鍵盤事件總結(jié) 推薦
- JavaScript 模擬用戶單擊事件
- Javascript 模擬點(diǎn)擊事件(點(diǎn)擊鏈接與html點(diǎn)擊) 兼容IE/Firefox
- javascript開發(fā)中使用onpropertychange,oninput事件解決onchange事件的不足
- JavaScript與Image加載事件(onload)、加載狀態(tài)(complete)
- javascript 動(dòng)態(tài)改變onclick事件觸發(fā)函數(shù)代碼
- JavaScript window.document的屬性、方法和事件小結(jié)
- JavaScript獲取onclick、onchange等事件值的代碼
- IE8的JavaScript點(diǎn)擊事件(onclick)不兼容的解決方法
- javascript移動(dòng)設(shè)備Web開發(fā)中對(duì)touch事件的封裝實(shí)例
- javascript監(jiān)聽鼠標(biāo)滾輪事件淺析
- 21個(gè)JavaScript事件(Events)屬性匯總
- javascript使用for循環(huán)批量注冊(cè)的事件不能正確獲取索引值的解決方法
- 純JavaScript實(shí)現(xiàn)獲取onclick、onchange等事件的值
- JavaScript事件委托用法分析
- 淺談javascript中this在事件中的應(yīng)用
相關(guān)文章
js實(shí)現(xiàn)可拖動(dòng)DIV的方法
這篇文章主要介紹了js實(shí)現(xiàn)可拖動(dòng)DIV的方法,有需要的朋友可以參考一下2013-12-12js動(dòng)態(tài)修改input輸入框的type屬性(實(shí)現(xiàn)方法解析)
本文是對(duì)js動(dòng)態(tài)修改input輸入框的type屬性的實(shí)現(xiàn)方法。進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11isArray()函數(shù)(JavaScript中對(duì)象類型判斷的幾種方法)
我們知道,JavaScript中檢測(cè)對(duì)象類型的運(yùn)算符有:typeof、instanceof,還有對(duì)象的constructor屬性2009-11-11更優(yōu)雅的微信小程序骨架屏實(shí)現(xiàn)詳解
這篇文章主要介紹了更優(yōu)雅的微信小程序骨架屏實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08原生Javascript實(shí)現(xiàn)五角星評(píng)分
這篇文章主要為大家詳細(xì)介紹了原生Javascript實(shí)現(xiàn)五角星評(píng)分,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09