Привязка к событию touchstart, заставляющая автофокус фокусироваться на любом клике в Mobile Safari

Автофокус теоретически полностью не поддерживается в мобильном Safari (http://caniuse.com/#feat=autofocus). Однако мы наблюдаем это очень странное поведение, когда, когда событие touchstart связано с document (независимо от того, имеет ли функция какое-либо поведение или нет), когда щелчок происходит в любом месте страницы, первый ввод с autofocus становится сфокусированным, и отображается экранная клавиатура. .

Это можно воспроизвести с помощью iOS 8 в симуляторе iOS. Вот минимальный html и javascript для воспроизведения проблемы:

<html>
<head>
<script>
document.addEventListener("touchstart", function() {});
</script>
</head>

<body>
<input type="text">
<input type="text" autofocus="autofocus">
</body>
</html>

А вот jsfiddle: http://jsfiddle.net/qd858nob/

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


person Ben Zittlau    schedule 31.10.2014    source источник
comment
Я сталкиваюсь в основном с той же проблемой, но программно вызывая .focus() при загрузке страницы. Как только на странице происходит прикосновение, фокус переходит на ввод и появляется клавиатура. Вы сообщили об этом в Apple? Это новинка для iOS 8.   -  person Dan    schedule 10.12.2014


Ответы (1)


См. в iOS8 с использованием .focus() будет отображать виртуальную клавиатуру и прокручивать страницу после касания для более широкого обсуждения этой проблемы. Похоже, это «баг» iOS 8. Я подал отчет в Apple — лучшее, что вы можете сделать, это то же самое, и надеюсь, что это всплывет достаточно высоко в их списке, чтобы исправить это в ближайшее время.

person Dan    schedule 09.12.2014