ANDROID WEBKIT: Выбирайте элементы, получая фокусные события, но не открывая!

У меня есть ряд выбранных элементов в форме на мобильном сайте. Эти элементы выбора находятся внутри области прокрутки, обрабатываемой с помощью преобразований JS и CSS3, поэтому получение события касания / щелчка / любого другого события для регистрации в элементах выбора было достаточно сложной задачей. Тем не менее, теперь я обнаружил, что только на Android, несмотря на то, что селекторы нажимаются и фокусируются - они просто отказываются открываться. Я на 100% уверен, что выбранные получают свое фокусное событие (посредством отладки), так что, честно говоря, я полностью озадачен. Без отладки нет других событий фокуса / размытия на выборках. На iPhone работает нормально... есть идеи?

2 ответа

Я бился головой об стену с этой же проблемой. Кажется, он изолирован от Android 2.1/2.2 (а может и 2.0?). Селекты отлично работают в Android 1.5/1.6. Я даже создал простую страницу, которая просто меняет стиль отображения выбора с "нет" на блокировку, и выбор все еще не открывается последовательно. Как ни странно, иногда после обновления страницы она может работать, а после другого обновления она может снова сломаться. Как вы сказали, события focus и click/touch запускаются из элемента, поэтому я не знаю, в чем проблема.

Иногда, если я масштабирую страницу, я могу открыть выбор, но даже тогда выбранное значение не отображается в элементе выбора на странице.

Я отправил отчет об ошибке в команду разработчиков Android, но даже если это будет исправлено в будущих сборках, проблема все равно будет существовать в 2.1/2.2.

Кто-нибудь еще может найти решение этой проблемы?


//---- Обновить ------
Если вы используете webkit-transition для показа / скрытия элемента, появляется прикрепление следующего события к элементу, чтобы исправить выбор внутри него:

.addEventListener ("webkitTransitionEnd", функция (е){
     this.innerHTML = this.innerHTML;
},ложный);

Я не совсем уверен, почему это работает, но перезапись элемента в DOM, кажется, помогает по некоторым причинам. Протестировано на симуляторах Android 2.1 / 2.2, EVO4G и MyTouch.

Я нашел решение в этом ответе от a.meservy. Вот ответ, скопированный для всеобщего удобства.

В этом случае проблема была на самом деле вызвана jQTouch. Чтобы это исправить, просто закомментируйте эти 4 строки в jqtouch.css

Под "телом"

  /*-webkit-perspective: 800;*/
  /*-webkit-transform-style: preserve-3d;*/ 

Под "тело> * "

/*-webkit-backface-visibility: hidden;*/
/*-webkit-transform: translate3d(0,0,0) rotate(0) scale(1);*/
Другие вопросы по тегам