<a href="#" mxh="0" onclick="if(this.mxh=='0') youFun();ifthis.mxh='1'">
在youFun()执行完后把mxh='0'即可

解决方案 »

  1.   

    <a href="#" onclick="alert();setTimeout('a1.releaseCapture()',500);a1.setCapture();">123</a>
    <a id=a1>123</a>
      

  2.   

    <a href="" mxh="0" onclick="if(this.mxh=='0'){this.mxh='1';youFun(this);};return false">xcvxcv</a>
    <script>
    function youFun(a)
    {
    alert("I am running")
    xxx()
    a.mxh='0'
    }
    function xxx()
    {
    for(i=0;i<1000000;i++)
    {
    a=i
    }
    }
    </script>
    在youFun()执行完后把mxh='0'即可
      

  3.   

    我用了 net_lover(孟子E章) 的思想,因为是多个链接调用同一个函数,所以我使用了document.flag变量代替mxh,具体实现如下
    <script.....>
    document.flag=0;
    </sc..><a href=# onclick="if(document.flag==0){document.flag=1;myfun();document.flag=0;};return false">
    这样虽然避免了多次快速点击产生的停顿(注:停顿现象是这样的,当快速点击时,中间的点击调用的函数产生的效果并不会显示,但是会消耗时间,只有最后一次点击的效果才会显示出来,感觉就像停顿),但是中间点击产生的效果会依次显示,并占用时间,也就是说中间的点击并没有取消函数的调用,有没有办法能真正取消中间的点击对函数的调用,谢了。 bencalie(Bencalie) 的方法没试,因为我要处理的不是单一的链接,而是几个链接。
      

  4.   

    你可以使用attachEvent方法将我给的代码setTimeout('a1.releaseCapture()',500);a1.setCapture();附加到每个链接的onclick事件中,如果在指定时间内想取消鼠标的抓取,使用右键即可,否则将不等到setTimeout时间到了自动取消抓取,就根本无法对当前窗口进行任何操作。应为弹出对话框和滚动窗口来取消鼠标抓取都无法做到。
      

  5.   

    to  bencalie(Bencalie) 
    据个例子吧,我对javascript不熟,不会用attachEvent
      

  6.   

    <script>
    function st(obj){obj.onclick=new Function('return false')}
    function rst(obj){obj.onclick=new Function('alert("ok! i\'m back!")')}
    </script><a href=# onclick=alert('fine')> link </a><br>
    <a href=# onclick=alert('link_disabled'),st(document.all.tags("A")[0])> disabled </a><br>
    <a href=# onclick=alert('link_enabled'),rst(document.all.tags("A")[0])> enabled </a>
      

  7.   

    为了让你看出效果,我改成两秒的,无论多少链接都可以。这是定时的,你也可以把document.body.releaseCapture()放在你要执行的函数结尾<body>
    <a href="#" onclick="alert();">123</a>
    <script>
    for(i=0;i<document.all.tags("A").length;i++)
    document.all.tags("A")[i].attachEvent("onclick",setCap)
    function setCap(){
    setTimeout('document.body.releaseCapture()',2000);
    document.body.setCapture();
    }
    </script>
      

  8.   

    to  goldenlove(潇洒.net) 
    我不是要改变整个页面的<a>标签的onclick所执行的函数,只是一部分,而且每个链接执行的函数的参数是不一样的
      

  9.   

    to  goldenlove(潇洒.net)
    我是在说你的方法不行,你的方法使得每个a标签的onclick都执行相同的函数,包括参数,但是我要做的是每个a标签的onclick执行的函数参数是不同的,这样你的方法就不能工作了bencalie(Bencalie)的方法好像也存在同样的问题,就是要求每个a标签的onclik方法执行相同的函数,包括参数
      

  10.   

    晕,没试试不要乱讲<body>
    <a href="#" onclick="alert();">123</a>
    <a href="#" onclick="confirm('123');">123</a>
    <script>
    for(i=0;i<document.all.tags("A").length;i++)
    document.all.tags("A")[i].attachEvent("onclick",setCap)
    function setCap(){
    setTimeout('document.body.releaseCapture()',2000);
    document.body.setCapture();
    }
    </script>
      

  11.   

    服了你了...... 还非得要我把鱼噻到你嘴里你才吃啊 !?!...<a href=# onclick=alert('fine'),st(this)> link </a><br>
    <a href=# onclick=alert('link_disabled')> disabled </a><br>
    <a href=# onclick=alert('link_enabled')> enabled </a><script>
    var k=new Array();
    for(i=0;i<document.all.tags("A").length;i++)
    k[i]=document.all.tags("A")[i].onclickfunction st(obj){obj.onclick=new Function('return false'), setTimeout('rst()',2000);}
    function rst(){for(i=0;i<document.all.tags("A").length;i++) document.all.tags("A")[i].onclick=k[i];}
    </script>
      

  12.   

    goldenlove(潇洒.net),一起撤退,我们败了,呵呵
      

  13.   

    嘿嘿.. 最终版. 不但可以每个连接都能设置不同的 function.
    现在连停止的秒数都可以自定义了. 每个连接的停顿时间都不一样. ^_^
    <a href=# onclick=alert('fine'),st(this,2)> link </a><br>
    <a href=# onclick=alert('link_disabled'),st(this,4)> disabled </a><br>
    <a href=# onclick=alert('link_enabled'),st(this,10)> enabled </a><script>
    var k=new Array(),obj=document.all.tags("A");
    for(i=0;i<obj.length;i++)
    k[i]=obj[i].onclick
    function st(obj,wt){obj.onclick=new Function('return false'),alert('wait '+wt+' 秒!'), setTimeout('rst()',wt*1000);}
    function rst(){for(i=0;i<obj.length;i++) obj[i].onclick=k[i];}
    </script>
      

  14.   

    bencalie(Bencalie) 方法基本可以使用
    能不能不用定时,而在我的函数执行完就恢复捕捉?
    我试了 将function setCap(){
    setTimeout('document.body.releaseCapture()',2000);
    document.body.setCapture();
    }
    改为
    function setCap(){
    document.body.releaseCapture();
    }
    将document.body.setCapture();放在我的函数为末尾,不行将document.body.releaseCapture();放在函数开头
    将document.body.setCapture();放在函数末尾
    将出现不点击右键不能开启捕捉的情况只能使用定时吗?
      

  15.   

    写反了这样处理后
    document.body.releaseCapture();放在函数末尾
    出现不点击右键不能开启捕捉的情况
    //这段代码放在了页面的最后
    <script>
    for(i=0;i<document.all.tags("A").length;i++)
    document.all.tags("A")[i].attachEvent("onclick",setCap)
    function setCap(){
    document.body.setCapture();
    }
    </script>
      

  16.   

    <body>
    <a href="#" onclick="fun1()">123</a><input id=a1>
    <script>
    for(i=0;i<document.all.tags("A").length;i++)
    document.all.tags("A")[i].attachEvent("onclick",setCap)
    function setCap(){
    document.body.setCapture();
    }
    var i=1
    function fun1(){
    //你要执行的代码
    if(i<=10){
    a1.value=i
    setTimeout("fun1()",500)
    i++
    }
    else{
    document.body.releaseCapture()
    i=1
    }
    }
    </script>
      

  17.   

    这是个非常古老的问题,牵涉到script的运行机制。
    函数运行当中是无法得知a被点击的事件的。(没有VB的doEvents方法)
    当他知道这个事件时,函数已经结束了。
    就像一个人无法同时跨过两条河流。
    较好的解决办法是友好地提醒用户,该段处理费时较长,请耐心等待。
      

  18.   

    非常感谢各位的参与,其实我不是经常写javascript代码的,所以对javascript不很了解,
    还是 onestab(┼─) 说得对,每个click事件都会被按顺序相应,这样就不可能采用在调用函数中采用某种方法屏蔽后来的click事件
    如果不使用延迟的方法,问题几乎不能解决,所以
    goldenlove(潇洒.net)和bencalie(Bencalie) 的方法中均使用了延迟来屏蔽短时间内的click事件,这样的处理对速度慢的机器是有效的,但是对于速度快的机器,相当于人为的降低了机器速度,不太可取,
     net_lover(孟子E章)的方法是一个很奇怪的现象,如果不使用该方法,会出现我前面说的一种停顿现象,使用了该方法,虽然不能屏蔽掉后续的连续点击,但是却让每次点击引发的函数所产生的效果显示了出来,我认为这个方法是最佳的,速度快的机器不会出现停顿,速度慢的机器也不会出现我前面说的那种停顿现象(就像是没反应了一样),我采用了这个方法十分感谢大家的参与,结贴