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