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