如何通过 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")
}
我在网页上有某些功能,我只想在浏览器不支持触摸时呈现这些功能。经过大量谷歌搜索,我发现了以下代码,它可以工作,但它只能在 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")
}