MobileSafari, как правило, имеет некорректное поведение кнопки HTML (неверное значение: «не похоже на собственную кнопку iOS»). Правильное поведение кнопки выглядит следующим образом:
- Пользователь нажимает кнопку: Подсветка кнопки
- Пользователь вытаскивает палец из кнопки: кнопка тускнеет
- Пользователь перетаскивает палец назад в кнопку: Подсветка кнопки
- Пользователь вытаскивает палец из кнопки и отпускает: Кнопка не нажимает
Кнопки MobileSafari выделяются при касании их, остаются выделенными независимо от того, куда вы перемещаетесь, и нажимают независимо от того, где вы отпускаете их (если только прокрутка представления не происходит, в этом случае касание всегда отменяется, даже если вы повторно вводите кнопку ).
Эта проблема распространяется на все интерактивные объекты, такие как ссылки (когда -webkit-touch-callout
установлено на none
). Пока я нашел только одно веб-приложение с правильным поведением кнопок: Facebook. Если посмотреть на их код, похоже, что они сделали много прыжков, чтобы заставить его работать правильно (отслеживая все события мыши вручную и вообще не используя кнопки). Код плотный, использует Javelin, и я пока не совсем разбираюсь во всех частях, необходимых для его работы.
Я знаю, что я немного шучу (потому что если бы это было легко, все бы это сделали), но я все равно спрошу. Есть ли общедоступный кусок кода, который обрабатывает эту функцию? Есть ли более простое решение, чем обратный инжиниринг Javelin, даже если оно применимо только к WebKit? (Javelin не очень хорошо подходит для моих легких задач.) Моя конечная цель - правильное поведение кнопок для UIWebView
, встроенного в собственное приложение, поэтому гибридные решения JavaScript / ObjC также приемлемы (хотя гибридных подходов не существует ум).