检测鼠标支持

时间:2012-01-20 00:20:59

标签: javascript javascript-events web

这与检测浏览器中的触摸支持相反。如何检测浏览器是否支持鼠标? Chrome for desktop应该返回true,Safari for iPad应该返回false。

我认为移动浏览器会为通常的检测技巧返回误报。

3 个答案:

答案 0 :(得分:1)

在使用触摸事件的浏览器中:

var clickEvent = ('ontouchstart' in window ? 'touchend' : 'click'); 基本上是说“如果设备支持触摸,只听取touchend而不是点击” - 这在多输入设备上会立即通过鼠标,触控板或键盘关闭任何交互。

本文详细讨论了您的问题here

另一篇富有洞察力的文章here

但是,这完全取决于你想要达到的目标。

答案 1 :(得分:0)

理论上,您应该能够测试它是否具有触摸支持,然后反过来。我可能错了,但据我所知,不支持触摸事件的浏览器将支持鼠标事件,反之亦然,因为这两者之间的差异通常是移动设备与普通浏览器之间的区别。

编辑:另一种可能是使用onmousemove,就像使用ontouchmove来检测触摸功能一样。但是,我不确定移动浏览器是否会注册onmousemove。

答案 2 :(得分:0)

此方法检查Touch对象是否存在而不使用事件。如果没有,你有一个鼠标。我认为这是最简单的方法。它将在具有触摸和鼠标的罕见设备上返回false,因此您必须确定这是否会影响您的设计。

function hasTouch() {
    return (typeof Touch == 'object' );
};

演示:http://jsfiddle.net/ThinkingStiff/ux89v/

脚本:

function hasTouch() {
    return (typeof Touch == 'object' );
};

document.getElementById( 'touch' ).textContent = 'Mouse: ' + !hasTouch();

HTML:

<div id="touch"></div>