<a href="#" mxh="0" onclick="if(this.mxh=='0') youFun();ifthis.mxh='1'">
在youFun()执行完后把mxh='0'即可
在youFun()执行完后把mxh='0'即可
解决方案 »
- 问题,如何判断调用页面是否正常?
- IE中抛异常玩。
- 100分脆求"用ActiveX和CSS实现B/S模式下票据打印"的设计代码
- 如何让table里的复选框同一行中的某元素的值改变
- 怎样取得HTML中表格数据??
- div 滚动条的判断
- 用JS模拟POST提交,谁有好方法,帮帮忙
- (高分相赠!!)鼠标点击一个td,td马上变成一个下拉框,下拉框选中td当前的值(下拉框的内容是已知的)...(内详!)
- 有关iframe的简单问题
- html经过jquery渲染过,jquery动态向页面中添加html时候如何保持渲染的效果?
- 我不懂.htc文件?(在线)
- 谁来告诉我,toString(),valueOf(),以及eval()等怎么用?还有一个function???
<a id=a1>123</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'即可
<script.....>
document.flag=0;
</sc..><a href=# onclick="if(document.flag==0){document.flag=1;myfun();document.flag=0;};return false">
这样虽然避免了多次快速点击产生的停顿(注:停顿现象是这样的,当快速点击时,中间的点击调用的函数产生的效果并不会显示,但是会消耗时间,只有最后一次点击的效果才会显示出来,感觉就像停顿),但是中间点击产生的效果会依次显示,并占用时间,也就是说中间的点击并没有取消函数的调用,有没有办法能真正取消中间的点击对函数的调用,谢了。 bencalie(Bencalie) 的方法没试,因为我要处理的不是单一的链接,而是几个链接。
据个例子吧,我对javascript不熟,不会用attachEvent
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>
<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>
我不是要改变整个页面的<a>标签的onclick所执行的函数,只是一部分,而且每个链接执行的函数的参数是不一样的
我是在说你的方法不行,你的方法使得每个a标签的onclick都执行相同的函数,包括参数,但是我要做的是每个a标签的onclick执行的函数参数是不同的,这样你的方法就不能工作了bencalie(Bencalie)的方法好像也存在同样的问题,就是要求每个a标签的onclik方法执行相同的函数,包括参数
<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>
<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>
现在连停止的秒数都可以自定义了. 每个连接的停顿时间都不一样. ^_^
<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>
能不能不用定时,而在我的函数执行完就恢复捕捉?
我试了 将function setCap(){
setTimeout('document.body.releaseCapture()',2000);
document.body.setCapture();
}
改为
function setCap(){
document.body.releaseCapture();
}
将document.body.setCapture();放在我的函数为末尾,不行将document.body.releaseCapture();放在函数开头
将document.body.setCapture();放在函数末尾
将出现不点击右键不能开启捕捉的情况只能使用定时吗?
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>
<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>
函数运行当中是无法得知a被点击的事件的。(没有VB的doEvents方法)
当他知道这个事件时,函数已经结束了。
就像一个人无法同时跨过两条河流。
较好的解决办法是友好地提醒用户,该段处理费时较长,请耐心等待。
还是 onestab(┼─) 说得对,每个click事件都会被按顺序相应,这样就不可能采用在调用函数中采用某种方法屏蔽后来的click事件
如果不使用延迟的方法,问题几乎不能解决,所以
goldenlove(潇洒.net)和bencalie(Bencalie) 的方法中均使用了延迟来屏蔽短时间内的click事件,这样的处理对速度慢的机器是有效的,但是对于速度快的机器,相当于人为的降低了机器速度,不太可取,
net_lover(孟子E章)的方法是一个很奇怪的现象,如果不使用该方法,会出现我前面说的一种停顿现象,使用了该方法,虽然不能屏蔽掉后续的连续点击,但是却让每次点击引发的函数所产生的效果显示了出来,我认为这个方法是最佳的,速度快的机器不会出现停顿,速度慢的机器也不会出现我前面说的那种停顿现象(就像是没反应了一样),我采用了这个方法十分感谢大家的参与,结贴