我目前使用以下测试(取自 Modernizr)来检测触摸支持:
function is_touch_device() {
var bool;
if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
bool = true;
} else {
injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function(node) {
bool = node.offsetTop === 9;
});
}
return bool;
}
但有些设备同时由触摸和鼠标驱动,因此我想要一个单独的函数来检测设备是否支持鼠标。进行这项检查的好方法是什么?
最终我的目的是能够做到这些:
if(is_touch_device())
if(has_mouse_support())
if(is_touch_device() && has_mouse_support())
There's CSS 媒体 https://developer.mozilla.org/docs/Web/CSS/@media/pointer就是为了这个!
您可以通过获取该值来检查某个设备是否有鼠标pointer
CSS媒体特性:
if (matchMedia('(pointer:fine)').matches) {
// Device has a mouse
}
因为它是 CSS,所以你甚至不需要使用 JavaScript:
@media (pointer: fine) {
/* Rules for devices with mouse here */
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)