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/4817029/

相关文章:

ListView 项目上的 Android SpannableString

javascript - 捕捉 Android/iPhone 触摸 Action 的框架? - Javascript

java - andEngine:为什么触摸事件不起作用?

Javascript:有没有办法为 Parse.Promise.when 指定无限输入参数?

javascript - 如何在扩展中播放音频?

javascript - 检测数组项中的 Mailto 与 Http/Https 并在新选项卡中打开 Http url

javascript - 我如何知道哪个 anchor 标记被点击?

jquery - 无法让 leanModal 工作

javascript - Yii 使用 ajax 分页

jquery - 如何使用正则表达式删除字符串中的字母、破折号和美元符号?