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

时间:2016-03-11 12:33:37

标签: javascript touch modernizr

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

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

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

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

但它既不适用于操作系统。我知道根据this,实际上无法检测到设计是否响应了物理触摸,但是有没有任何黑客可以告诉我两个平台上的设备的触摸功能:iOS和Android ?

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

1 个答案:

答案 0 :(得分:3)

经过多次努力,我终于设法获得了几行代码来检测Android和iOS设备的触摸,这是最终的功能:

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