Подтвердить что ты не робот

Как получить jQueryUI drag\drop с сенсорными устройствами

Это одна из ситуаций, когда я надеюсь, что кто-то ответит, чтобы сказать мне, что я идиот. Но я по-прежнему удивляюсь, что jQueryUI drag\drop не работает с сенсорными устройствами. Я не тестировал их все, но я пробовал iphone\ipad\android 2, 3 и 4 за последний год и ничего. Просто попробовал последнюю версию на новом Android. Еще ничего. Не верьте мне, просто зайдите на демонстрационную страницу на мобильном устройстве и попытайтесь использовать примеры drag\drop. Ничего.

Есть ли в игре техническая проблема или несовместимость ядра? Исправить настолько легко, что его не стоит писать? Разве jQuery devs не используют мобильные устройства? Я видел "исправления", размещенные здесь и там вокруг Stack Overflow, но все они "хаки", и все те, которые я пробовал, не работают.

Я растерялся. Может кто-то пролить свет на эту проблему?

4b9b3361

Ответ 1

Если вы хотите, чтобы ваш текущий код пользовательского интерфейса jQuery работал с событиями касания, вы можете использовать патч обезьяны jQuery UI Touch Punch.

Единственная "техническая проблема или несовместимость ядра" заключается в том, что пользовательский интерфейс jQuery (1.x) прослушивает только события мыши, а не события касания (см. ответ @ScottGonzales для историческая причина). jQuery touch punch, выше, делает это изменение. Вы даже можете попробовать некоторые из примеров пользовательского интерфейса jQuery на этой странице, и они работают. Как правило, использование Touch Punch является принятым в настоящее время решением.

Ответ 2

Вследствие того, почему jQuery UI не поддерживает сенсорные устройства, существует долгая история, но это сводится к тому, что Touch Event был нестандартной реализацией WebKit. В то время будущее выглядело скучным. Apple держала патенты, которые никто не хотел приближать; в результате Mozilla реализовала свою собственную систему сенсорных событий с потоками, которые никогда не попадались. Было непонятно, что сделают Microsoft и Opera. Пол Бакаус (создатель пользовательского интерфейса jQuery) хотел предоставить поддержку iPhone 4 года назад. Я хотел дождаться официального стандарта.

Прошло время, Mozilla отказалась от своих событий касания, и Microsoft внедрила собственную систему событий указателей. W3C сформировал рабочую группу для стандартизации Touch Events и изучения патентов Apple. Рабочая группа Touch Events опубликовала рекомендацию и расформирована. В конце концов Microsoft представила предложение о стандартизации событий указателей, и теперь есть рабочая группа W3C Events.

В настоящее время мы работаем над device-agnostic rewrite всех взаимодействий интерфейса jQuery, которые будут частью jQuery UI 2.0. До тех пор вы можете использовать jQuery UI Touch Punch.

В начале этого года я написал о некоторой истории вокруг Touch Events и о том, почему события указателей обеспечивают лучшее будущее. Вы можете прочитать об этом в блоге jQuery.

Ответ 3

Отъезд jQTouch

Это плагин jQuery, помогающий преодолеть разрывы событий между настольными и сенсорными устройствами.