日期:2014-05-16 浏览次数:20364 次
以下是一段用于测试两种事件流的类型:捕获(capture)和冒泡(bubble),如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"> document.onreadystatechange = function () { if(document.readyState=="complete") { var inner = document.getElementById('inner'); var banner = document.getElementById('banner'); if(inner.addEventListener){ inner.addEventListener('click',function(){ alert(1.1); },true); banner.addEventListener('click',function(){ alert(2.1); },true); document.body.addEventListener('click',function(){ alert(3.1); },true); }else if(inner.attachEvent){ inner.attachEvent('onclick',function(){ alert(1.1); }); } } } clickHandlerOnBody = function(){ alert(3); } clickHandlerOnDiv = function(){ alert(2); } clickHandlerOnInner = function(){ alert(1); } </script> <title>Demo System</title> </head> <body id="body" onclick="clickHandlerOnBody()"> body <div id='banner' style="width:100px;height:100px;background-color:red;" onclick="clickHandlerOnDiv()"> banner <div id='inner' style="width:50px;height:50px;background-color:yellow;" onclick="clickHandlerOnInner()">inner</div> </div> </body> </html>
?点击inner输出的firefox下输出的结果是:
3.1
2.1
1
1.1
2
3
而不是:
3.1
2.1
1.1
1
2
3
原因是什么?
另外,不知道两种捕获类事件流的具体使用场景,stackoverflow上的回答也只是说为了兼容IE,一般都是bubble事件流。