【问题标题】:Every other click of link in Internet Explorer does not work每次在 Internet Explorer 中单击链接都不起作用
【发布时间】:2011-06-09 20:23:30
【问题描述】:

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

这里是一些示例代码:

<!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>

点击非常缓慢,每次都会增加计数器。以更快的速度点击,它会跳过点击。 IE6/7/8 中控件的 onclick 和 onmousedown 事件也会发生这种情况。

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

【问题讨论】:

标签: javascript html internet-explorer


【解决方案1】:

您可能会遇到双击事件。

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

这应该可以解决问题。

【讨论】:

  • 好点 - 请参阅 jsfiddle.net/e2NUJ - 跨浏览器的行为似乎更加统一
  • 我收回这一点 - Chrome 会在您双击时记录 3 次点击计数,而 IE 不会。
  • @Colin:在不使用 dblclick 的情况下在 chrome 中工作正常。听起来像带有触摸屏的销售点系统将在一个可预测的平台上。话虽如此,&lt;a href="#" onmouseup="doClick();return false;" onclick="return false;"&gt; 似乎在两者中都更有效。
  • 谢谢!在不同的浏览器上以不同方式处理双击确实是一个问题。即使双击,FF 也总是触发 onclick 事件。 IE 只在第一次双击时触发 onclick。
【解决方案2】:

据我所知,IE 的事件处理程序似乎比其他浏览器慢。

http://jsfiddle.net/F5B54/

我在 Firefox、Chrome 和 IE8 中对此进行了测试。 IE 运行速度肯定会变慢/错过点击次数。

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

--- 更新答案---

IE 分别处理 onclick 和 dblclick。这意味着如果您快速单击两次,这将注册为单个 dblclick 事件。

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

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

【讨论】:

  • 同意。这也是我在 Firefox 上看到的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2015-12-23
  • 2011-11-28
  • 1970-01-01
相关资源
最近更新 更多