事件綁定之小測(cè)試 onclick && addEventListener
前提:只是一個(gè)簡(jiǎn)單的小測(cè)試,而且 addEventListener 屬于標(biāo)準(zhǔn)綁定函數(shù),IE 中與此不兼容(IE 相應(yīng)的是 attachEvent),所以此次測(cè)試先拋棄 IE,使用 Firefox 5.0.1, Chrome 14.0, Opera 11.50
測(cè)試頁(yè)面:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<style type="text/css">
.test {
background-color: #FFF;
border: 1px solid gray;
height: 100px;
width: 100px;
margin: 0 10px 0;
float: left;
}
</style>
</head>
<body>
<div id="test1" class="test" onclick="console.log('test1 : click!');" onmouseover="console.log('test1 : mouseover!');">TEST1</div>
<div id="test2" class="test">TEST2</div>
<div id="test3" class="test">TEST3</div>
<script type="text/javascript">
(function(){
var $ = function(o){//Simple Tool
return document.getElementById(o);
}
//For Test2:
$('test2').onclick = function(){console.log('test2 : click!');}
$('test2').onmouseover = function(){console.log('test2 : mouseover!');}
//For Test3:
$('test3').addEventListener('click', function(){
console.log('test3 : click!');
}, false);
$('test3').addEventListener('mouseover', function(){
console.log('test3 : mouseover!');
}, false);
})();
</script>
</body>
</html>
頁(yè)面效果如下截圖:

測(cè)試代碼中采用了三種最常見(jiàn)的事件綁定方法
FIREFOX:
1,F(xiàn)irefox 的 Firebug 中選中 test1 元素:
右側(cè) DOM 標(biāo)簽中選擇顯示所有屬性:
在其中找到了 attributes 數(shù)組,如下:
這是因?yàn)?test1 元素的兩個(gè)事件句柄直接寫(xiě)到了元素中,再往下的列表中找不到更多相關(guān)的信息,此種綁定模式下只能在 firebug 的 DOM 標(biāo)簽的 attributes 中找到事件句柄。
2,選中 test2 元素:
右側(cè) DOM 標(biāo)簽:
test2 采用在 javascript 中綁定事件句柄的方式,被作為“用戶自定義屬性”顯示在了 DOM 標(biāo)簽中,右擊鼠標(biāo)可以查看相關(guān)信息:
3,選中 test3 元素:
這次在 DOM 標(biāo)簽中沒(méi)有找到任何相關(guān)此元素綁定事件的信息。。。
總而言之,firebug 中在標(biāo)準(zhǔn)綁定事件函數(shù)下(addEventListener),并不好檢測(cè)到某個(gè)元素已綁定的事件函數(shù),(不要說(shuō)嘗試打印一下那個(gè)元素的 onclick 屬性,addEventListener 綁定和 onclick 綁定毫不相干,此種情況下你會(huì)得到 nudefined);如果是在前兩種事件綁定下,可以得到一些簡(jiǎn)單信息。
-----
OPERA:
1,在 Opera 的 Dragonfly 中選中 test1 :
在右方的屬性列表中可以找到相關(guān)的信息:
點(diǎn)擊加號(hào)同樣可以查看綁定的函數(shù)信息:
想查看某個(gè)函數(shù)體的話,有一種簡(jiǎn)單的方法,在控制臺(tái)中直接輸入:
直接就打印出函數(shù)體,更加的方便!
2,選擇 test2 和 test1 幾乎相同,就不在贅述了;
3,選擇 test3:
右方的屬性標(biāo)簽里找不到什么了,onclick 和 onmouseover 的值都為 null。
總而言之,Opera Dragonfly 和 Firefox Firebug 表現(xiàn)差不多,對(duì)在標(biāo)準(zhǔn)綁定函數(shù)下 某個(gè)元素綁定了哪些事件表達(dá)得不是很清晰。
-----
CHROME:
Chrome 下就清晰很多了:
1,在調(diào)試工具中選擇 test1(或者 test2,這兩者類(lèi)似)
看看右側(cè)的信息位:
Chrome 中的 Event Listeners 是一個(gè)不錯(cuò)的小工具,直接羅列出當(dāng)前選中元素上面已經(jīng)被綁定的監(jiān)聽(tīng)函數(shù),點(diǎn)擊小黑三角可以查看綁定函數(shù)的信息:
click 中有兩項(xiàng),第一項(xiàng)是 div#test1,這個(gè)就是我們綁定的 onclick 函數(shù)信息;第二項(xiàng)的 document 可以不去看(Chrome 自身的處理);
isAttribute: true :說(shuō)明此 onclick 函數(shù)句柄是作為元素屬性來(lái)對(duì)待的(因?yàn)槲覀冇玫氖?onclick = function(){…},不管是 test1 還是 test2);
lineNumber: 18 :說(shuō)明綁定函數(shù)的位置;
useCapture: false : 說(shuō)明不使用事件捕獲;其他的語(yǔ)義性很強(qiáng),就不說(shuō)了;
同樣,在 Properties 的第一個(gè) HTMLDivElement 列表中,test1 和 test2 中都能看到:
2,選中 test3:
在 Properties 中 onclick 和 onmouseover 都會(huì)變成 null,但是 Event Listeners 仍舊是:
但是注意這里的 div#test3:
isAttribute 變成了 false,因?yàn)槲覀儧](méi)有使用 onclick 屬性,而是用的 addEventListener。
先記這些吧!寫(xiě)得有點(diǎn)亂~
- Javascript 的addEventListener()及attachEvent()區(qū)別分析
- addEventListener 的用法示例介紹
- window.addEventListener來(lái)解決讓一個(gè)js事件執(zhí)行多個(gè)函數(shù)
- document.addEventListener使用介紹
- JS在IE和FF下attachEvent,addEventListener學(xué)習(xí)筆記
- javascript attachEvent和addEventListener使用方法
- 詳解addEventListener的三個(gè)參數(shù)之useCapture
- addEventListener()第三個(gè)參數(shù)useCapture (Boolean)詳細(xì)解析
- 講兩件事:1.this指針的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件處理上的區(qū)別
- addEventListener()與removeEventListener()解析
相關(guān)文章
bootstrap table實(shí)現(xiàn)橫向合并與縱向合并
這篇文章主要為大家詳細(xì)介紹了bootstrap table實(shí)現(xiàn)橫向合并與縱向合并,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
axios實(shí)現(xiàn)取消請(qǐng)求的方法詳解
axios 是現(xiàn)在前端項(xiàng)目中最常使用的一個(gè)請(qǐng)求庫(kù),目前 Github star 已經(jīng)達(dá)到了 104k star,本文我們討論的問(wèn)題是axios 是如何實(shí)現(xiàn)取消請(qǐng)求(Cancel requests)的,文中有詳細(xì)的實(shí)現(xiàn)方法,感興趣的朋友可以參考下2024-04-04
JavaScript正則表達(dá)式簡(jiǎn)單實(shí)用實(shí)例
這篇文章主要介紹了JavaScript正則表達(dá)式簡(jiǎn)單實(shí)用實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06
javascript調(diào)試之DOM斷點(diǎn)調(diào)試法使用技巧分享
在開(kāi)發(fā)中,偶爾會(huì)遇到類(lèi)似這樣的問(wèn)題:頁(yè)面上的一個(gè)DOM元素被改了屬性,但是我們卻不知道是哪個(gè)腳本更改的2014-04-04
el表達(dá)式 寫(xiě)入bootstrap表格數(shù)據(jù)頁(yè)面的實(shí)例代碼
這篇文章主要介紹了el表達(dá)式 寫(xiě)入bootstrap表格數(shù)據(jù)頁(yè)面的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-01-01

