(窗口中的“ontouchstart”)返回true但没有触摸事件

时间:2012-07-16 13:55:05

标签: javascript jquery html5 javascript-events cordova

我正在尝试编写将在浏览器中运行或作为phonegap应用程序运行的代码。 我需要做的一件事就是决定我是否处于支持触摸事件的环境中。

我当前的问题是我的chrome(20.0.01132.47米)为true返回('ontouchstart' in window)但它不会触发触摸事件。

当我打开开发人员工具设置对话框(开发人员工具右下角的齿轮图标)时。我可以选择“模拟触摸事件”。当我选中此选项时,浏览器会触发触摸事件。但是当它没有被检查时它不会触发事件,但我使用的检测仍然说触摸事件是可用的。

我是否可以通过脚本判断是否启用了“模拟触摸事件”?

基于JQuery的答案很好。

2 个答案:

答案 0 :(得分:1)

  

我是否可以通过脚本判断是否启用了“模拟触摸事件”?

尝试检查多个手指; - )

也许这有帮助?

window.addEventListener('touchstart', function(event) {
    var emulate = event.targetTouches.length == 2;
    alert(emulate ? true : false);
}, false);

顺便说一句: 除非您关闭开发人员工具栏,否则'ontouchstart' in window会生成false(chrome v21.0.1180.60)。

Fiddle

答案 1 :(得分:0)

js的最佳方式:

function is_touch_device() {
    return 'ontouchstart' in window || navigator.maxTouchPoints;
}
console.log(is_touch_device())