Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (';ontouchstart';在窗口中)返回true,但不返回触摸事件_Javascript_Html_Jquery_Cordova_Dom Events - Fatal编程技术网

Javascript (';ontouchstart';在窗口中)返回true,但不返回触摸事件

Javascript (';ontouchstart';在窗口中)返回true,但不返回触摸事件,javascript,html,jquery,cordova,dom-events,Javascript,Html,Jquery,Cordova,Dom Events,我正在尝试编写可以在浏览器或phonegap应用程序中运行的代码。 我需要做的一件事是决定我所处的环境是否支持触摸事件 我当前的问题是,我的Chrome(20.0.01132.47 m)返回的true(“窗口中的”ontouchstart“),但它不会触发触摸事件 当我打开“开发人员工具设置”对话框(开发人员工具右下角的齿轮图标)时。我可以选择“模拟触摸事件”。当我选中此选项时,浏览器将触发触摸事件。但是,当它没有被选中时,它不会触发事件,但我使用的检测仍然表示触摸事件可用 我可以从脚本中判断是

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

我当前的问题是,我的Chrome(20.0.01132.47 m)返回
true
(“窗口中的”ontouchstart“
),但它不会触发触摸事件

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

我可以从脚本中判断是否启用了“模拟触摸事件”吗

基于JQuery的答案很好

我可以从脚本中判断是否启用了“模拟触摸事件”吗

尝试检查是否有多个手指;-)

也许这有帮助

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

顺便说一句:
窗口中的“ontouchstart”将导致
错误(chrome v21.0.1180.60),除非您关闭了开发者工具栏

js的最佳方式:

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

我不知道这有什么用。如果未触发
touchstart
,则无论如何都不会调用此代码。也许我的Q不够清晰——我并没有试图区分模拟的触摸事件和“真实”的触摸事件。我想知道是否支持touchEvents。为什么不创建一个初始设置为false的全局标志呢。在ontouch事件处理程序中,将标志设置为true。因此,如果事件触发,则标志将设置为true,并且您知道设备具有触摸功能support@VimilSaju但是,您无法检测在模拟事件期间是否调用了事件处理程序函数,在本例中,chromes模拟触摸事件功能。因此,所有设备上的全局标志都将更改,即使是桌面上的chrome。@yckart但如果启用了“模拟触摸事件”,则用户会出于特定原因故意启用它。这与浏览器模拟不同的用户代理(或者应用程序试图确定它是在虚拟机上运行还是在真正的机器上运行——很少有应用程序想知道这一点)不一样吗?为什么任何网站都想知道触摸事件是否被模拟?如果浏览器说支持触摸事件,那么这就足够了,如何提供支持(通过仿真或实际的硬件支持)应该与站点无关。是的,你完全正确。但是,这并不能回答他的问题;)下面是测试和误报的列表