Как надежно обнаружить сенсорные устройства в MS Edge - PullRequest
0 голосов
/ 13 марта 2019

Я полагаю, что EDGE недавно изменил свое поведение, и при использовании на настольном, не сенсорном устройстве теперь сообщает о значениях> 0 для navigator.maxTouchPoints

Это нарушает следующий JS-код, который мы используем для обнаружения сенсорногоустройства:

function is_touch_device() {
    var touch = false;
    if ( window.PointerEvent && ('maxTouchPoints' in navigator) ) {
        // if Pointer Events are supported, just check maxTouchPoints
        if (navigator.maxTouchPoints > 0) {
          touch = true;
        }
    } else {
        // no Pointer Events...
        if ( window.matchMedia && window.matchMedia("(any-pointer:coarse)").matches ) {
          // check for any-pointer:coarse which mostly means touchscreen
            touch = true;
        } else if ( window.TouchEvent || ('ontouchstart' in window) ) {
            // last resort - check for exposed touch events API / event handler
            touch = true;
        }
    }
    return touch;
}

Кто-нибудь знает надежный способ обнаружения (в JS), если MS Edge используется на сенсорном устройстве?Я ничего не смог найти.

Я знаю, что Эдж почти мертв, но пока я должен это поддерживать.

Спасибо!

1 Ответ

0 голосов
/ 14 марта 2019

Вы можете использовать следующий код, чтобы проверить, является ли это сенсорным устройством.

<script type="text/javascript">
    if ("ontouchstart" in document.documentElement) {
        document.write("your device is a touch screen device.");
    }
    else {
        document.write("your device is NOT a touch device");
    }
</script>
...