【问题标题】:How can I run different functions when clicking and double clicking using JavaScript?使用 JavaScript 单击和双击时如何运行不同的功能?
【发布时间】:2011-02-07 05:54:16
【问题描述】:

简单地说:

  1. 我想要什么: 你点击某个调用函数xxx(),而你双击调用另一个function yyy()

  2. 当我将onclickondblclick 放在一起时,只执行了xxx(),那么如何实现类似的效果呢?

    谢谢!!

【问题讨论】:

标签: javascript


【解决方案1】:

问题在于,在某些浏览器中,您的 onclick 处理程序会抓取该对的第一次单击,而 ondblclick 处理程序永远不会看到该操作。在其他浏览器中,点击被看到两次,双击也是如此。双击的潜在时间因操作系统、浏览器和用户配置而异。

至少可以说,以便携的方式处理这个问题是很困难的。

我建议只使用点击处理程序。但是让点击处理程序设置一个变量和一个超时。如果在没有第二次单击的情况下达到超时,请执行 onclick 操作。如果此时发生第二次单击,请确保超时不会执行任何操作并执行 ondblclick 操作。缺点是这意味着你的双击不会遵守本地操作系统、浏览器和用户配置的规则。

【讨论】:

  • jQuery 是否以跨浏览器兼容的方式正确模拟了 .bind("dblclick", ...) 的点击?
  • @Raynos:api.jquery.com/dblclick 中有一个很大的警告,强烈建议不要这样做。
【解决方案2】:

试试这个:

var dbclkTimeout=-1;
somelement.onclick=function(){
  if(dbclkTimeout==-1)
    dbclkTimeout=setTimeout(function(){onclickcallback();dbclkTimeout=-1;} , 200);
  else {
    clearTimeout(dbclkTimeout);
    dbclkTimeout=-1;
    ondbclickcallback();
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    相关资源
    最近更新 更多