检测浏览器/设备是否支持双击事件

5

我有一个包含多行的表格。 每行都可以通过单击该行进行选择。 双击该行将在同一窗口中打开数据表。

当使用移动设备时,双击(双击触摸?)不会触发我的双击事件,而移动浏览器只会缩放。

经过一些思考,我认为对于移动设备来说,用单击/轻敲打开数据表更加合理。

现在,我正在检测是否为移动设备浏览器,并使用以下代码设置表格事件监听器:

if( /Android|webOS|iPhone|iPad/i.test(navigator.userAgent) ) {
    // Single click event bind, open
} else {
    // Single click event bind, select
    // Double click event bind, open
}

与其依赖用户代理,我更愿意进行一些功能检测,以便使任何无法执行双击的设备正常工作。

我尝试检测我的安卓设备是否支持dblclick事件,实际上是可以的。
我想这是有道理的,因为浏览器确实支持它,但当双击时,设备会触发不同的事件。

我能想到的另一种方法是检查touchstart等事件是否可用,但这似乎和检查用户代理一样错误。

有没有好的方法来检测浏览器/客户端是否支持预期的双击?


你使用这个事件吗?$(elm).dblclick(); - Hodaya Shalom
@HodayaShalom 是的,那是我正在使用的jQuery事件。将jQuery添加到我的标签中,以澄清在我的情况下jQuery是可用的。 - Wertisdk
1个回答

6
也许尝试使用超时来检查第一次点击后是否还有另一个点击。
$(Elm).click(function(evnt){
  clicks++;
  if (clicks == 1) {
    setTimeout(function(){
      if(clicks == 1) 
        // Single click event bind, open
       else 
         // Double click event bind, open
    },2000);
});

谢谢你的回答!但是,如果上述方法不支持双击的设备,会使单击(选择一行)变得不可能吗? - Wertisdk
我不知道设备是否支持双击,但你可以绕过单击并检查它是否为双击。 - Hodaya Shalom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接