Я сталкиваюсь с проблемой, которая, кажется, происходит только в автономном режиме приложения HTML5, которое я сохранил на главном экране моего устройства iOS.
В автономном режиме я имею в виду веб-приложение HTML со следующим metatag
:
<meta name="apple-mobile-web-app-capable" content="yes">
Javascript (написанный в coffeescript), о котором идет речь, выглядит следующим образом:
$( ->
$(document).on('click', 'input', (e) ->
alert('click')
)
$(document).on('focusout', 'input', (e) ->
alert('blur')
)
)
Это делегированные обработчики событий для обработки динамически <input>
элементов <input>
. Сообщения alert()
отображаются в Mobile Safari. Однако, когда веб-приложение просматривается в автономном режиме (т.е. запускается с главного экрана), события не срабатывают.
Я использую jQuery v1.10.2, если это полезно.
Я столкнулся с аналогичной проблемой, когда динамически созданные входы не имеют указателя или позволяют вводить их при первом нажатии/прикосновении к входу. Клавиатура подходит, а свитки страниц показывают, что вход выбран, но на самом деле это не так. Второе касание/щелчок на входе помещает курсор на вход и позволяет вводить текст.
Мое обходное решение состояло в том, чтобы прикрепить событие touchhend к этому конкретному входу, а затем снова сфокусировать этот ввод, используя jQuery focus(). Мне пришлось использовать touchhend, потому что событие click не срабатывало в автономном режиме.
Ниже приведен фрагмент кода, вам придется извинить синтаксис, я использую Backbone. Это метод, вызываемый прикосновением моего ввода.
clickedInput: function (e) {
if (window.navigator.standalone) {
$(e.currentTarget).focus();
}
}