Как связать события «touchstart» и «click», но не реагировать на оба события?

Я работаю над мобильным веб-сайтом, который должен работать на различных устройствах. У меня сейчас головная боль от BlackBerry.

Нам нужно поддерживать как нажатия клавиш, так и события касания.

В идеале я бы просто использовал:

$thing.click(function(){...})

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

Чтобы исправить это, вместо этого используйте touchstart:

$thing.bind('touchstart', function(event){...})

Но как мне связать оба события, но запустить только одно? Мне все еще нужно событие щелчка для устройств с клавиатурой, но, конечно, я не хочу, чтобы событие щелчка запускалось, если я использую сенсорное устройство.

Бонусный вопрос: есть ли способ сделать это и дополнительно приспособить браузеры, которые не нет даже события touchstart? В ходе исследования выяснилось, что BlackBerry OS5 не поддерживает сенсорный запуск, поэтому также необходимо полагаться на события щелчка для этого браузера.

ДОБАВЛЕНИЕ:

Возможно, более исчерпывающий вопрос:

Можно / рекомендуется ли с помощью jQuery обрабатывать как сенсорные взаимодействия, так и взаимодействия с мышью с одними и теми же привязками?

В идеале, ответ - да. Если нет, у меня есть несколько вариантов:

1) Мы используем WURFL для получения информации об устройстве, поэтому можем создать нашу собственную матрицу устройств. В зависимости от устройства мы будем использовать сенсорный запуск ИЛИ щелчок.

2) Обнаружение поддержки сенсорного ввода в браузере через JS (мне нужно провести еще несколько исследований по этому поводу, но похоже, что это выполнимо).

Тем не менее, остается одна проблема: как насчет устройств, поддерживающих И ТО И ДРУГОЕ. Некоторые из поддерживаемых нами телефонов (а именно, Nokias и BlackBerries) имеют сенсорные экраны и клавиатуры. Так что это возвращает меня к исходному вопросу ... есть ли способ как-то разрешить оба сразу?

193
задан DA. 10 August 2011 в 14:08
поделиться