Ошибка прокрутки браузера Android/Samsung Galaxy SII в веб-формах. Хитбоксы списка избранных не прокручиваются

РЕДАКТИРОВАТЬ:Я загрузил видео на YouTube, демонстрирующее ошибку здесь:http://www.youtube.com/watch?v=zkDYlgtX5Hk

У меня действительно странная ошибка, которую я обнаружил при тестировании моего нового веб-приложения на Samsung Galaxy S2 под управлением Android 4.03 ICS.

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

Насколько я могу судить по нескольким имеющимся у меня тестовым устройствам, я думаю, что это происходит только на Samsung Galaxy S2, поскольку я пробовал это в симуляторе Android с той же версией Android и не смог воспроизвести проблему. Я знаю, что это делает его очень специфической пользовательской базой, у которой есть проблемы, однако в последний раз я проверял, что Galaxy s2 был самым популярным телефоном Android в моей стране (Австралии ), поэтому было бы неплохо найти решение.

Я создал очень простую страницу, чтобы продемонстрировать это по адресу http://users.tpg.com.au/geoffica/test.html

. Вы можете воспроизвести проблему, выполнив следующие действия:

  1. Загрузите страницу на Galaxy S2
  2. Прокрутите браузер так, чтобы страница полностью заполнила экран, а адресная строка была всего лишь в верхней части экрана.
  3. Там, где находится поле выбора, поместите палец в сторону экрана в качестве маркера того места, где находился список выбора.
  4. Прокрутите страницу вниз на любое расстояние, (, сохраняя список выбора на экране ), затем коснитесь пробела, где раньше был список выбора, и на экране должны появиться параметры. Это может занять несколько попыток, но это произойдет.

Теперь я знаю, вы думаете, что это довольно сложно воспроизвести и, вероятно, это произойдет редко, но в форме, которую я создал для клиента, из-за того, где были расположены элементы, хитбокс всегда перекрывал кнопку отправки формы, делая ее очень трудно нажать кнопку отправки. Списки выбора также будут воровать касания из других списков выбора, если хитбоксы перекрываются, из-за чего при касании появляются неправильные параметры.

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

Я также подумал о том, чтобы свернуть свой собственный плагин jquery, чтобы, возможно, размещать списки выбора за пределами экрана, а затем запускать их события щелчка, касаясь ссылки или чего-то еще. Если это мобильное устройство, то параметры появятся на экране независимо от положения селектора выбора. Однако это было бы довольно громоздко, и мне нужно было бы учитывать влияние, которое это окажет на пользователей, приходящих с ПК или iPad, например, которые вместо этого отображают параметры в раскрывающемся списке. Звучит довольно пролематично для меня. Может даже потребоваться нюхание браузера/устройства, специфичного для Galaxy s2.

Есть ли у кого-нибудь реальный обходной путь для этого, кроме просто не использовать списки выбора?

11
задан pantryfight 20 July 2012 в 00:39
поделиться