如何通过 Android 和 iOS 之间的 Javascript 检测设备上的触摸?

How to detect touch on a devise through Javascript across Android and iOS?

我在网页上有某些功能,我只想在浏览器不支持触摸时呈现这些功能。经过大量谷歌搜索,我发现了以下代码,它可以工作,但它只能在 Android 上工作,而不能在 iOS 设备上工作:

function supportsTouch() {
    return ('onstarttouch' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)
}

我也试过 Modernizr,并编写了以下脚本来检测设备上的触摸功能:

function supportsTouch() {
  if (Modernizr.touchevents) {
    return true;
  }
}

但它对 OS 都不起作用。我知道根据 this 无法实际检测到设备是否响应物理触摸,但是是否有任何 hack 可以告诉我设备在两个平台上的触摸功能:iOS 和 Android?

注意:我不会选择媒体查询选项,因为这会污染我的 Web 应用程序,因为任何人都可以在桌面计算机上更改浏览器的宽度。

经过一番努力,我终于设法得到了几行代码来检测 Android 以及 iOS 设备的触摸,这是最终的功能:

function supportsTouch() {
    return ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0) || (typeof el.ongesturestart == "function")
}