我目前使用以下测试(从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())

最佳答案

只是有a CSS media!

您可以通过获取pointer CSS媒体功能的值来检查某些设备是否具有鼠标:

if (matchMedia('(pointer:fine)').matches) {
  // Device has a mouse
}

因为它是CSS,所以您甚至不需要使用JavaScript:
@media (pointer: fine) {
  /* Rules for devices with mouse here */
}

关于javascript - 如何检测设备是否支持鼠标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21054126/

10-12 05:13