Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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,检测触摸设备_Javascript_Touch - Fatal编程技术网

Javascript,检测触摸设备

Javascript,检测触摸设备,javascript,touch,Javascript,Touch,我正在使用此功能检测设备是否为触摸设备: function is_touch_device() { return !!('ontouchstart' in window) || !!('onmsgesturechange' in window); }; 从这里获取此函数: 但自从Chrome25(25.0.1364)之后,它在我的桌面(不是触摸式设备)上返回真值。 我还将IE9更新为IE10,并且在IE中返回true 四处搜索,但找不到任何有用的方法来修复此问题,除了使用类似以下的工具

我正在使用此功能检测设备是否为触摸设备:

function is_touch_device()
{
    return !!('ontouchstart' in window) || !!('onmsgesturechange' in window);
};
从这里获取此函数:

但自从Chrome25(25.0.1364)之后,它在我的桌面(不是触摸式设备)上返回真值。 我还将IE9更新为IE10,并且在IE中返回true

四处搜索,但找不到任何有用的方法来修复此问题,除了使用类似以下的工具:

你推荐什么

我期待着您的回复

这似乎有效:

function isTouchEnabled() { return !!document.createTouch; }

代码工作正常,浏览器能够理解触摸事件,仅仅因为屏幕不可触摸并不意味着浏览器不支持该功能。您想要测试的是一个硬件功能,它实际上是不可测试的。您始终可以使用不同的方法来查看用户在触摸一次触摸界面后是否实际使用了触摸界面,如文章所述,或者大型库使用的许多其他方法,如Modernizer

作为参考,上述条款中实际使用的代码为:

function isTouchDevice() {
   var el = document.createElement('div');
   el.setAttribute('ongesturestart', 'return;');
   if(typeof el.ongesturestart == "function"){
      return true;
   }else {
      return false
   }
}
您可以使用来检测触摸功能


此问题非常类似,可能应视为重复问题。

您可以在服务器上通过适当更改页面视图进行检测。它有触摸屏、iSmartPhone、iTablet属性等。

当我从笔记本电脑访问我一直在使用的网站时,我也遇到了一个误报IE10触摸问题。最初的
是触摸式设备
方法,我使用的基本相同。我将该声明的后半部分修改如下:

function is_touch_device()
{
    return !!('ontouchstart' in window) || (!!('onmsgesturechange' in window) && !!window.navigator.maxTouchPoints);
}

window.navigator.maxTouchPoints
似乎是IE10中基于此帖子的特定内容:

谢谢!除了我的Windows桌面上的Chrome之外,它几乎可以在任何东西上工作(FF、IE、Android)。谢谢,但我搜索的是触摸屏检测,而不是设备检测。所以要注意的是,如果你有cdn缓存你的站点,那么服务器端设备检测并不能真正起作用。Modernizer不会检测触摸设备。它只识别触摸浏览器