Если вы нажмете элемент на iOS, браузер запускает события mouseover/mousemove
и отображает стили :hover
. Если он обнаруживает "изменение контента" в этом процессе, событие клика не запускается, и вам нужно снова нажать, чтобы запустить событие клика. Это описано на developer.apple.com.
У меня возникла проблема на веб-странице, где было обнаружено "изменение контента", даже если не были применены никакие события мыши или стили :hover
. Это заняло некоторое время, но я смог уменьшить веб-страницу до небольшого тестового примера:
<style>
a:hover { color: red }
foo + * { color: red }
</style>
<a href="about:blank">foo</a>
<input type="search">
На этой странице вам нужно нажать два раза по ссылке "foo" для навигации. Протестировано с iPad mini и iPhone (как на родном, так и на симуляторе).
После этого я нашел это сообщение в блоге с аналогичной проблемой. Но единственным исправлением, которое работает для моей проблемы, является следующий CSS:
input[type=search]::-webkit-search-cancel-button {
display: none;
}
Но я не могу использовать это обходное решение, если хочу, чтобы кнопка отмены поиска была видимой.
Есть ли другой способ обхода проблемы?
Я отправил эту ошибку на bugreport.apple.com несколько дней назад, без реакции яблока до сих пор. Эта ошибка, похоже, находится в iOS 6 и 7, и было бы здорово, если она будет исправлена в какой-то день.
Как узнать, является ли это веб-сайтом или ошибкой iOS?
Где подходящее место для сообщения об этой ошибке?
UPDATE
Эта ошибка, похоже, исправлена в iOS 8. Протестировано с iPad mini и iPhone (как на родном, так и на симуляторе).
ОБНОВЛЕНИЕ 2
Ошибка не была полностью исправлена в iOS 8, она по-прежнему появляется, если вы поместите некоторый CSS между фигурными скобками, например. color: red
. Я обновил тестовый пример, чтобы показать ошибку также в iOS 8.
ОБНОВЛЕНИЕ 3
Ошибка в iOS 9 не исправлена, но реакция bugreport.apple.com по-прежнему отсутствует, кроме "ведет себя как предполагалось".