Обнаружение касания на телефонах Blackberry - PullRequest
0 голосов
/ 08 марта 2012

Я занимаюсь разработкой веб-приложения, которое будет развернуто на различных устройствах, от настольных компьютеров до мобильных телефонов Android и мобильных телефонов Blackberry.Для поддержки таких разных устройств существует два разных интерфейса: сенсорный и не сенсорный.

Проблема в том, что устройства Blackberry без сенсорной поддержки, такие как Blackberry 9300, некорректно поддерживают сенсорные события.А именно,

'ontouchstart' in window;

возвращает true.

До сих пор я просто полагался на перехват браузера, как бы плохо он ни был:

if (window.navigator.userAgent.match(/BlackBerry/i)) {
    doStuff();
}

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

Есть ли более надежный способ обнаружения поддержки сенсорных событий, который будет работатьна устройствах Blackberry тоже?

1 Ответ

0 голосов
/ 12 марта 2012

Мне не известно о каких-либо встроенных свойствах для определения поддержки касания, но вы можете использовать имена устройств для разделения двух случаев:

public boolean hasTouchScreen()
{
   if (DeviceInfo.getDeviceName().startsWith("95")){
      return true;
   }
   else if (DeviceInfo.getDeviceName().startsWith("93")){
      return false;
   }...//other devices
    ...
   else{
      return false;
   }
}

Это довольно нецивилизованный способ, но он все равно сработает.

...