Обработчик touchstart искажает фокус ввода текста при заключении в iframe

Я работаю над приложением телефонной связи, которое использует iframe для встраивания уже мобильного веб-приложения. В веб-приложении есть функция поиска, которая фокусирует текстовое поле, которое показывает виртуальную клавиатуру. Пока все хорошо...

Однако я использую библиотеку, которая регистрирует прослушиватель touchstart в документе (тот, который находится внутри iframe). Поэтому, если во время отображения виртуальной клавиатуры пользователь касается документа, клавиатура перестает работать.

С ipad (или симулятора ipad в XCode... я тестировал на 7.0.3) перейдите сюда и следуйте инструкциям: https://s3.amazonaws.com/ypassets-andy/app-frame.html

Интересно то, что если вы не обернете его в iframe, клавиатура не сломается. Перейдите сюда: https://s3.amazonaws.com/ypassets-andy/app.html и следуйте инструкциям, чтобы он НЕ сломался.

Я ломал голову над этим, но не могу понять, как заставить эту штуку работать. Для справки, эти сообщения об обмене стеками кажутся связанными, но я не мог решить с ними проблему:

Спасибо за любые идеи!

Энди


person aharbick    schedule 07.02.2014    source источник


Ответы (1)


Похоже, это незарегистрированная ошибка iOS. Единственное исправление — переместить входные данные из iframe в основной документ.

Более длинная история:

Энди пытался решить эту проблему, но в конечном итоге потерпел неудачу (было для диалогового окна входа / настроек в модальном режиме). Меня чуть не убило, что я никогда не узнаю, но, может быть, это хорошее упражнение в дзен. Вот что мы устранили/попробовали:

  • iframe не фокусируется / фокусируется на другом документе
  • полное размытие всего перед установкой фокуса
  • setRange и т. д. вместо фокуса
  • события ручной сборки и запуска в стеке touchstart
  • проверить, срабатывает ли событие несколько раз
  • посмотрите, имеют ли какое-либо значение свойства css, такие как user-select или touch-callout

Все это последнее предположение заключалось в том, что это каким-то образом связано с логикой «прокрутки входных данных в представление» Webkit, которая получила некоторые обновления в iOS 7.

person Bruno    schedule 14.06.2014
comment
Я думаю, что нашел пару зарегистрированных случаев, к сожалению, пока нет решения. openradar.appspot.com/radar?id=2527401 bugs.jqueryui.com/ticket/9737 - person Christoffer; 15.07.2014