在过去,检测设备是否支持在JavaScript触摸事件的时候,我们可以做这样的事情:如何检测JavaScript中的设备触摸支持?
var touch_capable = ('ontouchstart' in document.documentElement);
然而,谷歌Chrome(17.x.x +)上述检查返回true
,甚至如果底层设备不支持触摸事件。例如,运行在Windows 7上面的代码返回true,因此,如果我们喜欢的东西结合起来:
var start_evt = (touch_capable) ? 'ontouchstart' : 'onmousedown';
在谷歌Chrome,永远不会触发事件,因为我们结合ontouchstart
。总之,有没有人知道一个可靠的方法来规避这一点?我目前运行下面的检查:
var touch_capable = ('ontouchstart' in document.documentElement && navigator.userAgent.toLowerCase().indexOf('chrome') == -1)
这是很不理想......
正确 - 虽然我有(并且爱)平板电脑,但有时我有鼠标,我不害怕使用它。 –
谢谢。这实际上是一个jQuery插件,我宁愿不添加Modernizr的先决条件。然而,出于某种原因'window.DocumentTouch &&文档instanceof DocumentTouch'返回'undefined' ... – BenM
@BenM你知道可以构建一个Modernizr的自定义下载,它只包含你需要的测试吗? – Alnitak