2011-06-09 36 views
4

我注意到,当单击IE中将href设置为javascript函数的链接时,第一次点击会起作用,但第二次点击有时不会。第三个将起作用,第四个不会。换句话说,IE浏览器只会触发每隔一次点击的javascript功能。如果在点击之间放置一段很长的停顿,则每次都会触发该功能。但是,当您点击更快一点时,它会跳过其他所有点击。有没有其他人注意到这种行为?我在Firefox中没有得到相同的行为。Internet Explorer中的其他每次点击链接都不起作用

下面是一些示例代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <title>Test</title> 
     <script type="text/javascript"> 
     var count = 0; 
     function doClick() 
     { 
      count++; 
      document.frm.COUNTER.value = count; 
     } 
    </script> 
</head> 
<body> 
    <form name="frm" action=""> 
     <input name="COUNTER" value="0"/> 
     <a href="javascript:doClick();">Click Here</a> 
    </form> 
</body> 
</html> 

点击非常缓慢,它的每一次计数器加1。点击速度适中,并且可以跳过点击。这也发生在IE6/7/8中的onclick和onmousedown控件事件中。

这是一个问题的原因是因为该应用程序是一个销售点系统,我们正在实现触摸屏的屏幕键。不得不多次按下链接/按钮/键,因为您打字速度过快不会被接受。

+1

你有没有考虑过使用现有的Javascript屏幕键盘? http://mottie.github.com/Keyboard/ – 2011-06-09 20:36:56

回答

4

您可能正在经历双击事件。

<a href="" onclick="doClick();return false;" ondblclick="doClick();return false;"> 

这应该做的伎俩。

+0

好点 - 请参阅http://jsfiddle.net/e2NUJ/ - 整个浏览器的行为似乎更加统一 – Colin 2011-06-09 20:54:30

+0

我回顾一下 - Chrome在双击时注册3次点击次数,而IE则没有。 – Colin 2011-06-09 21:01:45

+0

@Colin:虽然在没有使用dblclick的情况下可以在Chrome中正常工作。听起来像一个销售点系统与触摸屏将在一个可预测的平台上。话虽如此,''似乎在两方面都更好。 – 2011-06-09 21:16:06

2

据我可以告诉IE的事件处理程序似乎比其他浏览器慢。

http://jsfiddle.net/F5B54/

我在Firefox,Chrome和IE8测试这一点。 IE肯定跑得慢/错过点击。

我没有安装IE9,但它应该比IE8更好。

---已更新的答案---

IE分别处理onclick和dblclick。意思是如果你快速点击两次,这将注册为单个dblclick事件。

另一方面,Chrome会注册2个onclick事件和一个dbl click事件。

混合单击和双击单个元素可能会导致跨浏览器的行为显着不同。

+0

同意。这也是我在Firefox上看到的。谢谢! – 2011-06-10 12:46:57

相关问题