在Android和iOS设备上,存在一个内置的300毫秒延迟来捕获双击(谁在网站上使用它?说到用户体验呢?!) 我想摆脱这种延迟,阅读了很多关于这个主题的文章,但仍然不明白为什么这个简单的代码不是“OK”,或者会破坏用户体验:
$('a').bind('touchend', function (e) {
e.preventDefault();
this.click();
});
对我来说,它似乎运行得很完美,但我确信有理由不应该这样做。谢谢您指导我正确的方向!
在Android和iOS设备上,存在一个内置的300毫秒延迟来捕获双击(谁在网站上使用它?说到用户体验呢?!) 我想摆脱这种延迟,阅读了很多关于这个主题的文章,但仍然不明白为什么这个简单的代码不是“OK”,或者会破坏用户体验:
$('a').bind('touchend', function (e) {
e.preventDefault();
this.click();
});
对我来说,它似乎运行得很完美,但我确信有理由不应该这样做。谢谢您指导我正确的方向!
这段简单的代码表示,当触摸(拖动)事件结束在一个链接上时,触发“click”事件。如果用户在屏幕上滑动手指以滚动页面,并且这样的拖动结束在链接上,则链接将被意外触发。这会破坏用户体验(UX)。
消除延迟的标准方法是使用CSS touch-action
属性。就我所知,目前Firefox默认情况下还不支持该属性(about:config
具有标志layout.css.touch_action.enabled
,默认为false),而Safari根本不支持此属性。MSIE、Chrome和Android浏览器已经在所有平台上都支持此属性。
简而言之:
/* Disable double-click to zoom on links, input fields
and buttons to improve responsiveness */
a, input, button
{
touch-action: manipulation;
}