这与检测浏览器中的触摸支持相反。如何检测浏览器是否支持鼠标? Chrome for desktop应该返回true,Safari for iPad应该返回false。
我认为移动浏览器会为通常的检测技巧返回误报。
答案 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>