如何在MS Edge中可靠地检测触摸设备

时间:2019-03-13 13:51:21

标签: javascript microsoft-edge

我相信EDGE最近更改了其行为,并且在台式机,非触摸设备上使用时,现在报告navigator.maxTouchPoints的值> 0

这会破坏以下我们用于检测触摸设备的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;
}

有人知道在触摸设备上是否使用MS Edge来检测(在JS中)可靠的方法吗?我什么都找不到。

我知道Edge快要死了,但是暂时,我必须支持它。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码来检查它是否是触摸设备。

var timer = 0;

function incTime() {
  timer++;
  console.log(timer);
  if (timer == 5) {
    clearInterval(time_int);
    console.log('breaked')
  };
};
var time_int = '';

function initTime() {
  time_int = setInterval(incTime, 1000);
};
initTime()