2013-11-26 1 views
0

Я столкнулся с проблемой, которая, кажется, возникает только в автономном режиме приложения HTML5, которое я сохранил на экране на моем устройстве iOS.iOS Автономное приложение HTML5 «click» не запускает динамически вводимый ввод

К автономном режиме, я имею в виду 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> элементов. Сообщения в alert() отображаются в Mobile Safari. Однако, когда веб-приложение просматривается в автономном режиме (т. Е. Запускается с экрана Home), события не срабатывают.

Я использую jQuery v1.10.2, если это полезно.

ответ

0

Я столкнулся с аналогичной проблемой, когда динамически созданные входы не имеют указателя или позволяют вводить их при первом нажатии/прикосновении к входу. Клавиатура подходит, а свитки страниц показывают, что вход выбран, но на самом деле это не так. Второе касание/щелчок на входе помещает курсор на вход и позволяет вводить текст.

Мое обходное решение состояло в том, чтобы прикрепить событие touchhend к этому конкретному входу, а затем снова сфокусировать этот ввод, используя фокус() jQuery. Мне пришлось использовать touchhend, потому что событие click не срабатывало в автономном режиме.

Ниже приведен фрагмент кода, вы должны извинить синтаксис, я использую Backbone. Это метод, вызываемый прикосновением моего ввода.

clickedInput: function (e) { 

    if (window.navigator.standalone) { 

     $(e.currentTarget).focus(); 

    } 

} 
Смежные вопросы