在像iPhone/iPad/Android这样的触摸设备上,用手指点击一个小按钮可能很困难。据我所知,没有跨浏览器的方法可以检测带有CSS媒体查询的触摸设备。因此,我检查浏览器是否支持Javascript触摸事件。
到目前为止,其他浏览器还不支持它们,但开发频道上最新的谷歌Chrome
enabled touch events
(即使是非触摸设备)。我怀疑其他浏览器制造商也会效仿,因为带触摸屏的笔记本电脑即将问世
。
更新:这是Chrome中的一个错误,所以现在JavaScript检测再次工作
。
这是我使用的测试:
function isTouchDevice() {
return "ontouchstart" in window;
}
问题是,这只测试浏览器是否支持触摸事件,而不是设备。
有人知道给触摸设备更好的用户体验的正确[tm]方式吗?而不是嗅探用户代理。
Mozilla对触摸设备进行了媒体查询。但我在任何其他浏览器中都没有看到类似的内容:
https://developer.mozilla.org/En/CSS/Media_queries#-moz-touch-enabled
更新:我想避免为移动/触摸设备使用单独的页面/网站。该解决方案必须通过JavaScript中的对象检测或类似功能来检测触摸设备,或者包含自定义触摸CSS,而无需用户代理嗅探!
我问的主要原因是,在我联系css3工作组之前,确保今天不可能
。因此,如果您不能按照问题中的要求进行操作,请不要回答;)