<!DOCTYPE html>
<html>
<head>
   
    
</head>
<body>
 
 <a href ='http://www.sina.com' id='test'>sina </a>
</body>
   <script type="text/javascript">
function addEventSimple(obj,evt,fn) {
        if (obj.addEventListener)
            obj.addEventListener(evt,fn,false);//冒泡
    else if (obj.attachEvent)
            obj.attachEvent('on'+evt,fn);
    }function test(){
     alert('sese');
     //return false;
}document.onclick = test;
 var a =  document.getElementById('test');
a.onclick = function (){
alert('click事件传播到我这了 !');
 }  //addEventSimple(document,'click',test);
  
  // addEventSimple(a,'click',function (){
// alert('click事件传播到我这了 !');
 //});
 </script>
</html>上面的代码,我在firefox3.6下运行的结果:
点击超链接  先执行a上的处理函数,后执行 test函数这是为什么,难道传统事件传播是冒泡的,而不是捕获如果把test 函数里的retrun false 注释取消,点击超链接,不能链接到sina 
如果是冒泡,先到a ,就执行的a的注册函数,然后是默认操作,再是test函数,为什么
test 函数取消默认操作会影响到a就是二个问题:1 :传统事件注册,事件传统是冒泡 还是捕获
              2:为什么在test 里取消默认操作,会影响到 a 

解决方案 »

  1.   

    1.冒泡的
    2.在冒泡中,只要某一层return false了,就拒绝了,点击动作的默认事件了。也就是跳转
      

  2.   

    我的观点:
    1.确实默认是冒泡,好象firefox可以把捕获开启,ie不能,在哪看了一眼,忘记具体怎么说的了!
    2.这个链接到sina好象是link事件吧!应该有点特殊,不象.onclick那样直接绑在对象上~比如document.links就可以拿到页面所有的link组成的数组!冒到最后才执行?
    你要是写在<a>上再写一个winodw.open函数直接把href打开,那test()的return false肯定拦不住!
      

  3.   

    ie:只支持冒泡型事件
    ff:支持冒泡型和捕获型事件捕获型事件发生在冒泡型事件之前,事件的开始点好像都是从window对象开始的,结束点也是window,这个记不清楚了如果不想继续冒泡的话可以renturn false 就可以阻止冒泡了,还有一个方法是调用一个函数,具体记不的了建议在绑定事件的时候最好判断支持的事件模型,这样兼容性更好
      

  4.   

    js事件类型有标准有两种,捕获和冒泡。
    IE 冒泡
    FF 捕获
      

  5.   

    默认情况下,捕获没有开启!参见:
    http://www.jslab.org.cn/?tag=capture