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

Posted

技术标签:

【中文标题】检测浏览器/设备是不是支持双击事件【英文标题】:Detect if browser/device supports double click events检测浏览器/设备是否支持双击事件 【发布时间】:2012-12-30 11:56:39 【问题描述】:

我有一个包含多行的表。 每一行都可以通过在行上单击一次来选择。 双击该行会在同一窗口中打开该行所代表的数据表。

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

经过深思熟虑,我认为移动设备通过单击/点击打开数据表更有意义。

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

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 事件在我的 Android 设备上是否可用,它是可用的。 我想这是有道理的,因为浏览器确实支持它,但设备只是在双击时触发不同的事件。

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

有什么好的方法可以检测浏览器/客户端是否按预期支持双击?

【问题讨论】:

你使用这个活动吗? $(榆树).dblclick(); @HodayaShalom 是的,这就是我正在使用的 jQuery 事件。将 jQuery 添加到我的标签中,以澄清 jQuery 在我的情况下可用。 【参考方案1】:

也许尝试使用超时来检查在第一次点击后是否还有另一次点击

$(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);
);

【讨论】:

感谢您的回答!但是对于支持双击的设备,上述操作不会使单击(选择一行)成为不可能吗? 我不知道设备是否可以双击,但是您可以绕过单击并检查它是否是双击..

以上是关于检测浏览器/设备是不是支持双击事件的主要内容,如果未能解决你的问题,请参考以下文章

检测是不是支持事件监听器

如何使用 Modernizr 检测对即时滚动事件的支持?

JS—触摸事件手势事件

使用 Javascript 检测抖动事件,适用于所有主要浏览器/设备(iOS、Android)

如何针对触控设备优化网站

PhoneGap:检测是不是在桌面浏览器上运行