在 Javascript/jQuery 中,如何检测客户端设备是否有鼠标?
我有一个网站,当用户将鼠标悬停在某个项目上时,该网站会向上滑动一个小信息面板。我正在使用 jQuery.hoverIntent 来检测悬停,但这显然不适用于 iPhone/iPad/Android 等触摸屏设备。因此,在这些设备上,我想恢复为点击以显示信息面板。
在 Javascript/jQuery 中,如何检测客户端设备是否有鼠标?
我有一个网站,当用户将鼠标悬停在某个项目上时,该网站会向上滑动一个小信息面板。我正在使用 jQuery.hoverIntent 来检测悬停,但这显然不适用于 iPhone/iPad/Android 等触摸屏设备。因此,在这些设备上,我想恢复为点击以显示信息面板。
var isTouchDevice = 'ontouchstart' in document.documentElement;
注意:仅仅因为设备支持触摸事件并不一定意味着它只是一个触摸屏设备。许多设备(例如我的 Asus Zenbook)支持点击和触摸事件,即使它们没有任何实际的触摸输入机制。在设计触摸支持时,始终包括单击事件支持,并且永远不要假设任何设备都是唯一的一种或另一种。
发现 window.Touch 的测试在 android 上不起作用,但这样做:
function is_touch_device() {
return !!('ontouchstart' in window);
}
+1 用于做hover
和click
两者。另一种方法可能是使用 CSS 媒体查询并仅对较小的屏幕/移动设备使用某些样式,这些设备最有可能具有触摸/点击功能。因此,如果您通过 CSS 拥有一些特定的样式,并且从 jQuery 中检查这些元素的移动设备样式属性,您可以将它们挂钩以编写特定于移动设备的代码。
见这里:http : //www.forabeautifulweb.com/blog/about/hardboiled_css3_media_queries/
if ("ontouchstart" in window || navigator.msMaxTouchPoints) {
isTouch = true;
} else {
isTouch = false;
}
无处不在!
return (('ontouchstart' in window)
|| (navigator.maxTouchPoints > 0)
|| (navigator.msMaxTouchPoints > 0));
使用 maxTouchPoints 和 msMaxTouchPoints 的原因:
Microsoft 已声明从 Internet Explorer 11 开始,可能会删除此属性的 Microsoft 供应商前缀版本 (msMaxTouchPoints),并建议改用 maxTouchPoints。
来源:http : //ctrlq.org/code/19616-detect-touch-screen-javascript