Нет другого способа, кроме как поймать события, которые вы хотите предотвратить, и вызвать preventDefault()
для них, как вы уже более или менее выяснили.
Действительно, некоторые конкретныеСвойства / значения CSS могут изменить глобальное поведение сайта (например, с фиксированной шириной или fixed
), но вы не защищены от изменений в ОС (см. fixed
Обработка изменений в iOS5), и эти изменения не обязательно предотвращаютвсе поведение (пинч может быть отключен, но не двойное нажатие).
Таким образом, лучший способ отключить поведение по умолчанию только для двойного нажатия - воспользоваться преимуществом количество касаний iOS предоставляет: если у нас только один контакт, то мы нажимаем.Во-вторых, это означает, что мы сжимаем.
Следующий код настройки обеспечивает эту функциональность:
var elm = document.body; // or some selection of the element you want to disable
var catcher = function(evt) {
if (evt.touches.length < 2)
evt.preventDefault();
};
elm.addEventListener('touchstart', catcher, true);
Демонстрация на jsFiddle.
Примечание: третий параметр (от true
) до addEventListener
означает, что мы хотим захватить события , то есть перехватить их всех, даже для наших потомков.