關(guān)于IE瀏覽器以及Firefox下的javascript冒泡事件的響應(yīng)層級
<body>
<div id="testDiv" style="width:200px;height:200px;background:#c0c0c0;"></div>
</body>
現(xiàn)在在頁面加入這么一段腳本:
<script type="text/javascript">
window.onload=function(){ //在各個層級的元素上綁定事件
window.onclick=func;
document.onclick=func;
document.getElementById("timeDiv").onclick=func;
document.body.onclick=func;
}
function func(){ //響應(yīng)函數(shù),輸出響應(yīng)的元素
document.getElementById("timeDiv").innerHTML+=this+"<br>";
}
在firefox以及IE 8下打開頁面,在標(biāo)簽testDiv(灰色方塊)上單擊,結(jié)果分別如下截圖:
firefox下結(jié)果
IE 8下結(jié)果
可以看到,兩者結(jié)果并不相同?究竟為什么會這樣呢?
原來是由于IE瀏覽器以及Firefox對于冒泡型事件的支持層次不同造成的。(如對冒泡事件不是很了解可先查詢相關(guān)資料)
(1)在IE 6以及后續(xù)版本,冒泡事件支持的層級達(dá)到document對象。
(2)在firefox(準(zhǔn)確的說應(yīng)該是Mozilla1.0以及更高版本),對冒泡事件的支持一直上升到window窗口對象。
于是就造成了上面事件響應(yīng)結(jié)果的不同。
另外,有個有意思的地方不知道你注意到了沒有?就是事件目標(biāo)的響應(yīng)順序。(冒泡事件的響應(yīng)順序。。。好像有點(diǎn)廢話)我們知道,firefox同時支持兩種事件模型,也就是:捕獲型事件和冒泡型事件。在這里明顯事件處理函數(shù)作用在了冒泡階段。也就是說,如果我們采用傳統(tǒng)的直接給事件處理函數(shù)屬性賦值的話,比方說:
document.body.onclick=func;
事件處理函數(shù)將被添加到事件的冒泡階段。
以上就是對于IE、firefox里面冒泡事件響應(yīng)層級的一點(diǎn)介紹,同時順帶介紹了采用傳統(tǒng)事件處理函數(shù)直接賦值的默認(rèn)處理。詳細(xì)的講解可參見大牛Nicholas C. Zakas所著的《javascript高級程序設(shè)計》。
PS:以上內(nèi)容僅僅為個人讀書筆記,如有錯漏,隨時歡迎指正。同時希望能有更多的前端愛好者們共同分享你們的心得!
- 深入分析js的冒泡事件
- Js冒泡事件詳解及阻止示例
- js阻止默認(rèn)事件與js阻止事件冒泡示例分享 js阻止冒泡事件
- JS阻止冒泡事件以及默認(rèn)事件發(fā)生的簡單方法
- JS冒泡事件的快速解決方法
- Js 冒泡事件阻止實現(xiàn)代碼
- js 冒泡事件與事件監(jiān)聽使用分析
- javaScript 事件綁定、事件冒泡、事件捕獲和事件執(zhí)行順序整理總結(jié)
- js事件冒泡、事件捕獲和阻止默認(rèn)事件詳解
- javascript事件冒泡和事件捕獲詳解
- js事件監(jiān)聽機(jī)制(事件捕獲)總結(jié)
- js之事件冒泡和事件捕獲詳細(xì)介紹
- JS冒泡事件與事件捕獲實例詳解
相關(guān)文章
layer.open屬性詳解及l(fā)ayer.open彈出框使用post方法舉例
這篇文章主要給大家介紹了關(guān)于layer.open屬性詳解及l(fā)ayer.open彈出框使用post方法的相關(guān)資料,最近接觸到layer彈窗,感覺彈窗功能異常強(qiáng)大,真的很方便,所以記錄下來,需要的朋友可以參考下2023-12-12如何解決easyui自定義標(biāo)簽 datagrid edit combobox 手動輸入保存不上
這篇文章主要介紹了如何解決easyui自定義標(biāo)簽 datagrid edit combobox 手動輸入保存不上,需要的朋友可以參考下2015-12-12使用bootstrap莫名其妙出現(xiàn)橫向滾動條的問題及解決
這篇文章主要介紹了使用bootstrap莫名其妙出現(xiàn)橫向滾動條的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11