触摸屏检测:Chrome 17

3

根据使用JavaScript检测“触摸屏”设备的最佳方法是什么?,我实现了一个触摸设备检测。

((!!('ontouchstart' in window) ? 1 : 0) == 1)

这个语句可以很好地返回true或false,即使在最新的Chrome浏览器(v17)中也是如此。为了让我的代码更加美观,我将这个语句放进了一个小函数中。

function isTouchDevice() {
 return ((!!('ontouchstart' in window) ? 1 : 0) == 1);
};

不幸的是,在Chrome 17上,这个函数错误地返回TRUE,而(如上所述),如果从内联调用或直接从控制台调用,则语句本身运行正确。

其他浏览器(IE,FF)不会返回错误结果。

有人能解释一下吗?


3
布尔表达式中没有必要使用这么多的冗余。你只需要使用 'ontouchstart' in window。至于为什么它不起作用:我会查看Modernizr的操作 - Pointy
1个回答

0

我正在使用Chrome 17,结果返回false。(OS X 10.7.3)


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