【问题标题】:Is there a way to explicitly test if a device supports double-click?有没有办法明确测试设备是否支持双击?
【发布时间】:2014-01-31 20:14:05
【问题描述】:

我写了一个游戏,它允许用户配置自己的游戏设置。

其中一个选项是通过双击来打出一张牌。但是在移动设备上,如果用户选择了这个选项,游戏就会卡住,因为移动设备上没有双击。

所以我想做的是检测设备是否支持双击,如果支持,那很好,但如果它不回退到另一个偏好。

我试过一次,但失败了。我尝试检测设备是否支持触摸(使用modernizr),但这是错误的,因为有些计算机同时支持双击和触摸,在这种情况下我仍然想让人们双击。 (支持触控与支持双击并不相反)

有没有办法判断浏览器/设备组合是否支持传统的双击?

【问题讨论】:

  • 您可以尝试检测它们是否在移动设备上。

标签: javascript node.js


【解决方案1】:

不,除了提示用户尝试执行操作并检测是否发生单击或双击之外,还没有用于检测可用输入法的跨设备标准。

另一方面,您可以尝试使用诸如 Modernizr (http://modernizr.com/docs/) 之类的检测库来检测您是否在 touch 设备上,然后从检测和实际双击切换到检测频率内的点击。这将如下所示:

var d = new Date();
var lastClick = d.getTime();
var clickDelay = 500; //half second
if(Modernizr.touch){
body.click(function(){
  var currentClick = d.getTime();
  if(currentClick - lastClick < clickDelay){
  lastClick = 0; //prevent tripleclick from registering
  //doubleclick detected, do something
  }
});
} else /*use your current doubleclick detection*/ {
//do something
}

我也过于简单化了,因为在本例中,您希望检测触摸事件而不是点击,但这应该给出大致的概念。

【讨论】:

  • 既然没有好的解决方案,是否有理由按照您的建议去做而不是只使用detectmobilebrowsers.com 之类的东西?我得到了特征检测与设备检测的价值,但在这种情况下,我想要检测的特征不能直接检测到。每个替代方案都让我觉得有些骇人听闻。
  • 好吧,那是因为它是!您最终试图通过 javascript 访问系统级硬件信息,这是非常明确禁止的。在浏览器以编程方式和安全地提供这些信息之前,我们正在围绕一个固有的功能,即黑客的定义。为了回答您的另一个问题,我采用了我的方法,因为正如您所说,我们真正想要的是功能而不是设备。为了使后者发挥作用,您需要确定哪个设备的哪个版本在哪个浏览器上支持您的目标输入。
猜你喜欢
  • 2014-10-24
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 2012-05-07
  • 1970-01-01
相关资源
最近更新 更多