我们需要支持键盘点击和触摸事件。
理想情况下,我只需使用:
$thing.click(function(){...})
但我们遇到的问题是,一些黑莓设备在触摸屏幕后触发点击的时间会有非常烦人的延迟。
解决方法是改用touchstart:
$thing.bind('touchstart', function(event){...})
但是我该如何绑定两个事件,但只触发其中一个?我仍然需要 click 事件来支持键盘设备,但当然,如果我使用的是触摸设备,则不希望 click 事件被触发。
附加问题:是否有办法同时适应甚至没有 touchstart 事件的浏览器?研究后发现,BlackBerry OS5 不支持 touchstart 事件,因此也需要依赖 click 事件。
补充:
也许更全面的问题是:
使用 jQuery,是否可能/建议使用相同的绑定处理触摸交互和鼠标交互?
理想情况下,答案是肯定的。如果不行,我有一些选择:
- 我们可以使用 WURFL 来获取设备信息,因此可以创建自己的设备矩阵。根据设备,我们将使用 touchstart 或 click。
- 通过 JS 检测浏览器是否支持触摸(我需要进行更多的研究,但似乎是可行的)。
但这仍然存在一个问题:对于同时支持触摸屏和键盘的设备怎么办呢?我们支持的一些手机(即诺基亚和黑莓)都具有触摸屏和键盘。因此,这让我又回到了最初的问题...是否有办法同时允许两者?
.bind('touchstart mouseup')
可以解决这个问题(基于下面的评论之一) - oriadam.one
方法:http://api.jquery.com/one。 - oriadam