可能我的描述是乱了一些,具体现象描述请参看:http://zhidao.baidu.com/question/27580485.html,我感觉他苗描述得比较详细
我变成的过程中,采用Ajax框架,按钮A被点击时,根据后台数据值对A进行设定(是否为disable)。
正常状态下,无此现象,只有在IE中快速连续点击时,当A被设置成disable时才会发生此类现象。
我出现此显现的原因是:按钮处于被按下的状态后人然可以被点击,执行onclick操作,
有人说这是IE的一个bug, 那么在javascript中能不能编写什么方法,保证在一次点击按钮后,保证该按钮被弹起后,才会被再次点击。
我变成的过程中,采用Ajax框架,按钮A被点击时,根据后台数据值对A进行设定(是否为disable)。
正常状态下,无此现象,只有在IE中快速连续点击时,当A被设置成disable时才会发生此类现象。
我出现此显现的原因是:按钮处于被按下的状态后人然可以被点击,执行onclick操作,
有人说这是IE的一个bug, 那么在javascript中能不能编写什么方法,保证在一次点击按钮后,保证该按钮被弹起后,才会被再次点击。
1、js不可能控制鼠标。原因是js不允许直接操作硬件。
2、js可以模拟mouseup的效果。可以通过css实现,比如鼠标形状、button的突起等。
3、核心问题是,你所说的现象是怎么产生的。很大的可能性是:A、正在处理onmousedown时,另一个onmousedown发生了,两个事件处理发生了冲突。解决方案是,在处理过程开始时,不再理会这些事件。 function mousedownHandle(evt){
evt = evt || window.event;
var target = evt.target || evt.srcElement;
var oldClickHandle = target.onclick;
var oldMouseupHandle = target.onmousup;
var blankHandle = function(){return false;}
target.onmousedown = target.onmouseup = target.onclick = blankHandle;
//do your work here;
target.onclick = oldClickHandle;
target.onmouseup = oldMouseupHandle;
target.onmousedown = mousedownHandle;
}B、事件的冒泡。如果是因为这个原因,应该阻止冒泡。
只有这个窗口上去焦点后才能操作这个窗口.大家可以实验下,就按住按钮直到不能用,这个窗口没办法操作了.把this.onblur()加上使窗口失去焦点就可以了
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY> <button onmousedown="Diabled()" id='btn'>Test</button>
<script>
function Diabled(){setTimeout("Btn()",1000);}//1秒后执行
function Btn()
{
document.getElementById('btn').disabled=true;
// this.blur();//不注释掉这句窗口还真不能操作.
}
</script>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY> <button onmousedown="Diabled()" id='btn'>Test</button>
<script>
function Diabled(){setTimeout("Btn()",100);}//1秒后执行
function Btn()
{
document.getElementById('btn').disabled=true;
this.blur();//注释掉这句窗口还真不能操作.失去焦点,这样获得焦点后可以操作
this.focus();//重新获得焦点
}
</script>
</BODY>
</HTML>