javascript - 使用 JavaScript 检测 'touch screen' 设备的最佳方法是什么?

标签 javascript jquery touch

我编写了一个可在桌面和移动设备上使用的 jQuery 插件。我想知道是否有一种方法可以使用 JavaScript 来检测设备是否具有触摸屏功能。我正在使用 jquery-mobile.js 来检测触摸屏事件,它适用于 iOS、Android 等,但我还想根据用户的设备是否有触摸屏编写条件语句。

这可能吗?

最佳答案

2021 年更新

要查看旧答案:查看历史记录。我决定从头开始,因为在帖子中保留历史时它会失控。

我原来的回答说,使用与 Modernizr 所使用的功能相同的功能可能是个好主意,但这不再有效,因为他们删除了此 PR 上的“touchevents”测试:https://github.com/Modernizr/Modernizr/pull/2432因为它是一个令人困惑的主题。

话虽如此,这应该是一种检测浏览器是否具有“触摸功能”的相当不错的方法:

function isTouchDevice() {
  return (('ontouchstart' in window) ||
     (navigator.maxTouchPoints > 0) ||
     (navigator.msMaxTouchPoints > 0));
}

但是对于比我聪明得多的人所写的更高级的用例,我建议阅读这些文章:

关于javascript - 使用 JavaScript 检测 'touch screen' 设备的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10561475/

相关文章:

javascript - 如何从一个文本区域复制到另一个文本区域?

jquery - 无法获取父级的父级的 jquery data()。只返回未定义的

javascript - 取消触摸设备上的模拟悬停事件/颜色?

javascript - 如何使用具有父子关系的 JSON 数据创建带复选框的树?

javascript - 谷歌表格脚本: Automatically remove a row into another sheet

jquery - 为什么 jQuery.load 不处理相对链接?

gradle - 使用 gradle 对文件运行 touch 命令

javascript - Chrome 开发者工具如何模拟触摸事件?

javascript - AngularJS + Typescript => Controller 范围

javascript - jQuery - MaxImage 2.0 和 Cycle - 具有单独循环选项的多个幻灯片