我正在开发一个webapp,它将部署在各种设备上,从台式机,Android手机到Blackberry手机。必须支持这些不同的设备,存在两种不同的接口:触摸而不是触摸。
问题在于没有触摸支持的Blackberry设备(例如Blackberry 9300)错误地显示支持触摸事件。即,
'ontouchstart' in window;
返回true
。
到现在为止,我只是依赖浏览器嗅探,就像它一样糟糕:
if (window.navigator.userAgent.match(/BlackBerry/i)) {
doStuff();
}
但是现在我必须支持Blackberry Torch, 触摸,因此后者将不再起作用。当然,我可以尝试使用更精确的正则表达式进行浏览器嗅探,但我觉得我正在走向毁灭之路。
是否有更可靠的方法来检测对触摸事件的支持,这也适用于Blackberry设备?
答案 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;
}
}
这是一种非常不文明的方式,但它仍然有用。