这与在浏览器中检测触摸支持相反。如何检测浏览器是否支持鼠标? Chrome桌面应该返回true,Safari for iPad应该返回false。检测鼠标支持
我在想移动浏览器会针对通常的检测技巧返回误报。
这与在浏览器中检测触摸支持相反。如何检测浏览器是否支持鼠标? Chrome桌面应该返回true,Safari for iPad应该返回false。检测鼠标支持
我在想移动浏览器会针对通常的检测技巧返回误报。
理论上,您应该能够测试它是否具有触摸支持,然后反过来。我可能是错的,但据我所知,不支持触摸事件的浏览器将支持鼠标事件,反之亦然,因为这两者之间的区别通常是移动浏览器与普通浏览器。
编辑:另一种可能性是使用onmousemove,就像使用ontouchmove检测触摸功能一样。不过,我不确定移动浏览器是否会在移动设备上注册。
该方法检查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>
随着触摸屏开始出现在笔记本电脑和台式机上,使用鼠标和触控的设备将在未来几个月/几年内变得越来越少。我不明白为什么触摸不一定会成为这些设备上的一个对象? –
@Jonhoo是的。我只是在我的爱好项目web应用程序中调试奇怪的行为,并注意到我的Javascript代码认为我的17英寸触摸屏笔记本电脑是......手机或类似的东西。由于它有一个触摸屏。 – KajMagnus
那些使用触摸屏和鼠标的多功能一体机的人呢? – qwertymk
我想你的网站不会像你真正想要的那样工作,但它是否需要修复取决于这些浏览器的普遍程度,他在做什么,以及这些设备上的人是否想要使用他现场。这是一种可能的解决方法。 – CSturgess
这不起作用。桌面Firefox返回true以进行触摸检测。他们在桌面和移动设备上使用相同的代码库。 – Matthew