使用JavaScript单击和双击时如何运行不同的功能?

时间:2011-02-07 05:54:16

标签: javascript

简单地说:

  1. 我想要的:   点击调用函数xxx()时,双击另一个function yyy()

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

    谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

试试这个:

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