Задержка касания 300 мс, исчезла

В течение многих лет мобильные браузеры применяли задержку в 300–350 мс между touchend и click , пока они ждали, будет ли это двойное касание или нет, поскольку двойное касание было жестом для увеличения текста.

Начиная с первого выпуска Chrome для Android, эта задержка была устранена, если также было отключено масштабирование. Тем не менее, масштабирование — важная функция специальных возможностей. Начиная с Chrome 32 (еще в 2014 году) эта задержка исчезла для сайтов, оптимизированных для мобильных устройств , без удаления масштабирования ! Вскоре после этого Firefox и IE/Edge сделали то же самое, а в марте 2016 года аналогичное исправление появилось в iOS 9.3.

Разница в производительности огромна!

Наличие пользовательского интерфейса, который реагирует мгновенно, означает, что пользователь может быстро и уверенно нажимать каждую кнопку, а не останавливаться и ждать ответа. Узнайте больше о влиянии времени реакции человека на производительность Интернета в нашем введении в RAIL .

Чтобы убрать задержку касания в 300–350 мс, все, что вам нужно, это следующее в <head> вашей страницы:

<meta name="viewport" content="width=device-width">

При этом ширина области просмотра устанавливается такой же, как на устройстве, и обычно является лучшим решением для сайтов, оптимизированных для мобильных устройств. С помощью этого тега браузеры предполагают, что вы сделали текст читабельным на мобильных устройствах, а функция двойного касания для масштабирования отсутствует в пользу более быстрого щелчка.

Если по какой-то причине вы не можете внести это изменение, вы можете использовать touch-action: manipulation для достижения того же эффекта либо на всей странице, либо на отдельных элементах:

html {
    touch-action: manipulation;
}

Этот метод не поддерживается в Safari , поэтому тег области просмотра гораздо предпочтительнее.

Является ли потеря двойного касания для масштабирования проблемой доступности?

Нет. Масштабирование щипком продолжает работать, а функции ОС предназначены для пользователей, которым этот жест кажется сложным. На Android об этом позаботятся жесты увеличения . Подобные инструменты работают даже вне браузера.

А как насчет старых браузеров?

FastClick от FT Labs использует события касания для более быстрого запуска кликов и удаляет жест двойного касания. Он учитывает количество перемещений вашего пальца между touchstart и touchend чтобы различать прокрутку и касание.

Добавление прослушивателя touchstart ко всему влияет на производительность, поскольку взаимодействия более низкого уровня, такие как прокрутка, задерживаются из-за вызова прослушивателя, чтобы проверить, сработал ли он event.preventDefault() . К счастью, FastClick не будет устанавливать прослушиватели в тех случаях, когда браузер уже устранил задержку в 300 мс, так что вы получите лучшее от обоих!