0

我正在开发一个 Web 应用程序,它将部署在各种设备上,从台式机到 Android 手机,再到黑莓手机。必须支持这样不同的设备,存在两种不同的界面:触摸和非触摸。

问题是不支持触控的黑莓设备,例如黑莓 9300,似乎错误地支持触控事件。即,

'ontouchstart' in window;

返回true

到目前为止,我只是依靠浏览器嗅探,尽管它很糟糕:

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

但是现在我要支持黑莓手电筒,也就是触控,所以后者就不行了。当然,我可以尝试更精确的正则表达式来进行浏览器嗅探,但我觉得我正在走向灭亡。

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

4

1 回答 1

0

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

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

这是一种非常不文明的做法,但它仍然有效。

于 2012-03-12T07:01:39.377 回答