Posted on 2008-12-21 10:02
魚躍于淵 閱讀(1076)
評論(0) 編輯 收藏 所屬分類:
javascript相關
addEventListener 有三個參數(shù):第一個參數(shù)表示事件名稱(不含 on,如 "click");第二個參數(shù)表示要接收事件處理的函數(shù);第三個參數(shù)為 useCapture,本文就講解它。
1 <div id="outDiv">
2 <div id="middleDiv">
3 <div id="inDiv">請在此點擊鼠標。</div>
4 </div>
5 </div>
6
7 <div id="info"></div>
1 var outDiv = document.getElementById("outDiv");
2 var middleDiv = document.getElementById("middleDiv");
3 var inDiv = document.getElementById("inDiv");
4 var info = document.getElementById("info");
5
6 outDiv.addEventListener("click", function () { info.innerHTML += "outDiv" + "<br>"; }, false);
7 middleDiv.addEventListener("click", function () { info.innerHTML += "middleDiv" + "<br>"; }, false);
8 inDiv.addEventListener("click", function () { info.innerHTML += "inDiv" + "<br>"; }, false);
上述是我們測試的代碼,根據(jù) info 的顯示來確定觸發(fā)的順序,有三個 addEventListener,而 useCapture 可選值為 true 和 false,所以 2*2*2,可以得出 8 段不同的程序。
- 全為 false 時,觸發(fā)順序為:inDiv、middleDiv、outDiv;
- 全為 true 時,觸發(fā)順序為:outDiv、middleDiv、inDiv;
- outDiv 為 true,其他為 false 時,觸發(fā)順序為:outDiv、inDiv、middleDiv;
- middleDiv 為 true,其他為 false 時,觸發(fā)順序為:middleDiv、inDiv、outDiv;
- ……
最終得出如下結論:
- true 的觸發(fā)順序總是在 false 之前;
- 如果多個均為 true,則外層的觸發(fā)先于內層;
- 如果多個均為 false,則內層的觸發(fā)先于外層。
下面提供全部代碼,您可以更改其中的 true、false 值,來進行測試。注意,不適用于 IE。
1 <?xml version="1.0" encoding="gb2312"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4
5 <head>
6 <meta http-equiv="Content-Language" content="zh-cn" />
7 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
8 <title>useCapture</title>
9 <style type="text/css">
10 #outDiv
11 {
12 padding:10px 10px 10px 10px;
13 border:1px solid red;
14 }
15
16 #middleDiv
17 {
18 padding:10px 10px 10px 10px;
19 border:1px solid green;
20 }
21
22 #inDiv
23 {
24 padding:10px 10px 10px 10px;
25 border:1px solid blue;
26 }
27 </style>
28 </head>
29
30 <body>
31
32 <div id="outDiv">
33 <div id="middleDiv">
34 <div id="inDiv">請在此點擊鼠標。</div>
35 </div>
36 </div>
37
38 <div id="info"></div>
39
40 <script language="javascript" type="text/javascript">
41 <!--
42 //千一網(wǎng)絡 www.cftea.com
43
44 var outDiv = document.getElementById("outDiv");
45 var middleDiv = document.getElementById("middleDiv");
46 var inDiv = document.getElementById("inDiv");
47 var info = document.getElementById("info");
48
49 outDiv.addEventListener("click", function () { info.innerHTML += "outDiv" + "<br>"; }, false);
50 middleDiv.addEventListener("click", function () { info.innerHTML += "middleDiv" + "<br>"; }, false);
51 inDiv.addEventListener("click", function () { info.innerHTML += "inDiv" + "<br>"; }, false);
52 //-->
53 </script>
54
55 </body>
56
57 </html>