检测黑莓手机上的触控

时间:2012-03-08 10:23:01

标签: javascript web-applications blackberry touch browser-feature-detection

我正在开发一个webapp,它将部署在各种设备上,从台式机,Android手机到Blackberry手机。必须支持这些不同的设备,存在两种不同的接口:触摸而不是触摸。

问题在于没有触摸支持的Blackberry设备(例如Blackberry 9300)错误地显示支持触摸事件。即,

'ontouchstart' in window;

返回true

到现在为止,我只是依赖浏览器嗅探,就像它一样糟糕:

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

但是现在我必须支持Blackberry Torch, 触摸,因此后者将不再起作用。当然,我可以尝试使用更精确的正则表达式进行浏览器嗅探,但我觉得我正在走向毁灭之路。

  

是否有更可靠的方法来检测对触摸事件的支持,这也适用于Blackberry设备?

1 个答案:

答案 0 :(得分:0)

我不知道有任何内置属性来检测触摸支持,但您可以使用设备名称来分隔这两种情况:

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

这是一种非常不文明的方式,但它仍然有用。