У меня возникла проблема с iOS, и я выставил для нее скрипку:
Если прослушиватель событий добавлен в документ для любого события касания (touchstart/touchmove/touchhend), например:
function onTouch( e ){};
document.addEventListener( 'touchstart', onTouch, false );
что приводит к тому, что поля ввода имеют следующее поведение в iOS:
- Первое касание: вход становится фокусом, и пользователь может правильно ввести его.
- Последующие штрихи (с фокусом на поле уже на месте): ввод текста больше не работает
Я испытываю и тестирую эту проблему на iOS 5, 5.1 и 6, как на iPad, так и на iPhone (симуляторы и фактические устройства).
Единственное исправление, по-видимому, заключается в удалении прослушивателя событий, чтобы восстановить правильное поведение полей ввода (или вообще никогда не добавлять слушателя вообще):
document.removeEventListener( 'touchstart', onTouch);
Я также заметил, что если на странице есть несколько iframes, и один из них добавляет слушателя к своему документу, он также прерывает другие поля ввода iframe.
Скрипка ведет себя правильно на моем телефоне Android.
Любые идеи, почему это происходит? Или как иметь глобальные пользовательские обработчики событий для событий касания на месте, которые не нарушают входы на iOS?