DOM中有2种事件流,一个是冒泡事件,还有一个是捕获事件我现在有拦截所有的<a>链接</a>事件,使得所有的<a>超链接失效,
使用捕获事件应该可以做到吧,
具体用Javascript怎么才能捕获的<a>标签的点击事件,并使之失效啊??

解决方案 »

  1.   

    var a = document.getElementsByTagName('a');
    for(var i = 0;i < a.length; i++){
    a[i].onclick = function (){return false;}
    }
      

  2.   

    这个可以阻止冒泡。function stopBubble(e)
    //非ie的
    if(e&& e.stopPropagation)
    e.stopProgpagation();
    else
    window.event.cancelBubble=true;你说的点击事件失效,是要去掉浏览器的默认行为。function stopDefault(e)
    {
    if(e&& e.preventDefault)
    e.preventDefault();
    else
    window.event.returnValue=false;
    return false;
    }
      

  3.   

    用不着阻止冒泡呀<html>
    <head>
    <title> </title>
    <script>
    window.onload=function(){
    var as=document.getElementsByTagName("a");
    for(var i=0;i<as.length;i++)
    {
    as[i].onclick=function(){return false;};
    }
    }
    </script>
    </head>
    <body>
    <a href="http://www.baidu.com">百度</a><br/>
    <a href="http://www.google.com">谷歌</a>
    </body>
    <html> 
      

  4.   

    var as=document.getElementsByTagName("a");不要这种遍历的方法,当我动态添加<a>标签的时候就无效了,使超链接点击事件失效只是举个例子,我要的就是捕获事件流的js操作,最好是兼容浏览器的。
      

  5.   


    function stopPropagation(eventObj)
    {
    if(eventObj.stopPropagation)
    {
    eventObj.stopPropagation();
    }
    else
    {
    eventObj.cancelBubble=true;
    }
    }
      

  6.   

    LZ要的应该是取消默认动作而不是阻止冒泡吧
    <html>
    <head>
    <title> </title>
    <script>
    function stopPropagation(eventObj)
    {
    if(eventObj.stopPropagation)
    {
    eventObj.stopPropagation();
    }
    else
    {
    eventObj.cancelBubble=true;
    }
    }
    //取消默认动作
    function preventDefault(eventObj)
    {
    if(eventObj.preventDefault)
    {
    eventObj.preventDefault();
    }
    else
    {
    eventObj.returnValue=false;
    }
    }
    window.onload=function(){
    var as=document.getElementsByTagName("a");
    for(var i=0;i<as.length;i++)
    {
    if(window.event)
    as[i].onclick=function(){preventDefault(window.event)};
    else
    as[i].onclick=function(){preventDefault(arguments[0])};
    }
    }
    </script>
    </head>
    <body>
    <a href="http://www.baidu.com">百度</a><br/>
    <a href="http://www.google.com">谷歌</a>
    </body>
    <html> 
      

  7.   

    自己找到方法了window.addEventListener('click',function(event){
    var url=event.target.href;
    if(url.indexOf('http://')==0){
    alert(url);
    event.preventDefault();
    event.stopPropagation();

    }
    },true);其中第三个参数为true,表示在事件捕获阶段执行,如果为false,则在冒泡阶段执行
    因为IE不支持事件捕获,所以IE无法使用。
    不得不说IE很挫,W3C DOM2的事件规范又不支持
      

  8.   

    IE下面应该是这个 window.attachEvent(sEvent, fpNotify)