用鼠标连接检测触摸显示器

时间:2014-01-31 13:01:54

标签: javascript typescript

我想知道是否可以检测到运行JS应用的设备类型 我的意思是什么? - 我想提供触摸显示器(可以用作普通的触摸设备,也可以连接鼠标 - 因此它们可以像普通的PC一样工作)和经典的触摸设备(例如手机 - 无法使用鼠标)

有可能吗?我知道如何检测触摸设备:

var isTouch = !!("ontouchstart" in window || navigator.msMaxTouchPoints);

但是如何检测到有触摸显示器或者至少连接了鼠标?

1 个答案:

答案 0 :(得分:1)

嗯,你已经有了反映触控功能的bool。获得相同的鼠标是可行的,虽然不是很优雅。你可以这样做:

var hasMouse;
window.addEventListener('mousemove', function mouseCheck(e) {
    window.removeEventListener('mousemove', mouseCheck);
    hasMouse = true;
});

结合用户代理检查,您可以获得对用户设备的合理估计。当然,一些移动浏览器允许用户欺骗非移动用户代理以进行“桌面”查看。在你不确定设备功能的情况下,我不太喜欢强制接口格式的想法。如何在应用程序启动时简单地显示模态,并使用isTouch&& hasMouse,以及用户代理信息,以指示“推荐”布局?