Javascript 如何检测设备是否有钛合金触摸屏?

Javascript 如何检测设备是否有钛合金触摸屏?,javascript,android,titanium,appcelerator-mobile,Javascript,Android,Titanium,Appcelerator Mobile,我的目标是钛合金安卓。如何判断设备是否有触摸屏?最简单的方法是测试触摸事件支持。如果支持,则设备可能有触摸屏。如果没有,它可能没有,或者你无论如何也不能使用它们。一种解决办法是: var touchSupported = ('ontouchstart' in window); 但要小心,因为浏览器可能支持触摸事件,但设备可能不支持(例如,Chrome 20在没有触摸的设备中支持很多触摸事件) 您可以让用户单击一个按钮,查看是发送了一个触摸事件,还是仅仅单击一次 这就是我提出的解决方案。这真的很

我的目标是钛合金安卓。如何判断设备是否有触摸屏?

最简单的方法是测试触摸事件支持。如果支持,则设备可能有触摸屏。如果没有,它可能没有,或者你无论如何也不能使用它们。一种解决办法是:

var touchSupported = ('ontouchstart' in window);
但要小心,因为浏览器可能支持触摸事件,但设备可能不支持(例如,Chrome 20在没有触摸的设备中支持很多触摸事件)


您可以让用户单击一个按钮,查看是发送了一个触摸事件,还是仅仅单击一次

这就是我提出的解决方案。这真的很愚蠢,但很有效。无论在何处创建应用程序窗口,请添加以下代码:

function touchStart(){
    Titanium.App.Properties.setBool("touch", true);

    self.removeEventListener("touchstart", touchStart);
}

self.addEventListener("touchstart", touchStart);
用窗口名称替换
self
。现在,第一次检测到触摸事件时,将设置应用程序属性

稍后,检查触摸是否与以下内容一起出现:

var touchSupported = Titanium.App.Properties.getBool("touch", false);
如果您在模拟器上测试此功能,则即使更改“设备”,该属性也可能会保持不变。因此,将这一行添加到其他内容之前:

Titanium.App.Properties.setBool("touch", false);

不幸的是,这不起作用。我应该提到,Tianium没有使用“标准”事件名称。不过还是谢谢你。“让用户点击一个按钮”的想法怎么样?我确实想过,但我找到了一种透明的方法(我的答案)。那太好了!不过,在连接侦听器之前,可能应该测试触摸事件支持。我发现侦听器总是存在的(它还没有在非触摸设备上引发异常)。如果没有触摸支持,它就不会启动。是的,我知道:钛有一个不可靠的API