Я работаю над мобильным веб-сайтом, который должен работать на различных устройствах. У меня сейчас головная боль от BlackBerry.
Нам нужно поддерживать как нажатия клавиш, так и события касания.
В идеале я бы просто использовал:
$thing.click(function(){...})
, но проблема, с которой мы сталкиваемся, заключается в том, что некоторые из этих устройств Blackberry имеют очень раздражающую задержку от момента касания до момента, когда оно запускает щелчок.
Чтобы исправить это, вместо этого используйте touchstart:
$thing.bind('touchstart', function(event){...})
Но как мне связать оба события, но запустить только одно? Мне все еще нужно событие щелчка для устройств с клавиатурой, но, конечно, я не хочу, чтобы событие щелчка запускалось, если я использую сенсорное устройство.
Бонусный вопрос: есть ли способ сделать это и дополнительно приспособить браузеры, которые не нет даже события touchstart? В ходе исследования выяснилось, что BlackBerry OS5 не поддерживает сенсорный запуск, поэтому также необходимо полагаться на события щелчка для этого браузера.
ДОБАВЛЕНИЕ:
Возможно, более исчерпывающий вопрос:
Можно / рекомендуется ли с помощью jQuery обрабатывать как сенсорные взаимодействия, так и взаимодействия с мышью с одними и теми же привязками?
В идеале, ответ - да. Если нет, у меня есть несколько вариантов:
1) Мы используем WURFL для получения информации об устройстве, поэтому можем создать нашу собственную матрицу устройств. В зависимости от устройства мы будем использовать сенсорный запуск ИЛИ щелчок.
2) Обнаружение поддержки сенсорного ввода в браузере через JS (мне нужно провести еще несколько исследований по этому поводу, но похоже, что это выполнимо).
Тем не менее, остается одна проблема: как насчет устройств, поддерживающих И ТО И ДРУГОЕ. Некоторые из поддерживаемых нами телефонов (а именно, Nokias и BlackBerries) имеют сенсорные экраны и клавиатуры. Так что это возвращает меня к исходному вопросу ... есть ли способ как-то разрешить оба сразу?