<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body onclick="alert('body')">
<div id="dv" style="width:100px;height:100px;border:1px solid red"  onclick="alert('div')">

</div>
</body>
</html>这样是先弹出div,再弹出body,似乎这叫做事件冒泡,从外向里 渗透而看百度百科介绍,事件捕捉是从里向外,那么就以上代码,如何先弹出body,再弹出div,有没有这个可能?

解决方案 »

  1.   

    捕获是从DOM tree的根向子元素传播的过程,冒泡反之由当前元素向父元素的方向进行。传统的dom.onclick=function(){}写法是DOM0事件,实现捕获需要使用addEventListener方法及对应参数,JS和DOM如下<body> 
      <div id="div1">text</div>
    </body>
    window.onload = function () {
        document.getElementById('div1').addEventListener('click', function () {
            alert('div clicked');
        }, true);    document.body.addEventListener('click', function () {
            alert('dody clicked');
        }, true);
    };
      

  2.   

    注册handler时默认的处理应该是在冒泡阶段,如楼上所说可以在添加handler时设置最后的参数为true,即可将handler应用到捕获阶段