javascript - 如何检查用户是否使用 javascript 触摸设备(智能手机)

标签 javascript html orientation sensors

我想构建一个简单的网络应用程序,可以判断用户是否触摸了电话(设备)。 不仅仅是屏幕,还有所有设备。 所以我想出了如何检查用户是否触摸了屏幕而不是方向和运动传感器部分。 所以我发现了这段代码:

if (window.DeviceOrientationEvent) { 
  var x = document.getElementById('1'); 
  var y = document.getElementById('2');
  var z = document.getElementById('3');
  window.addEventListener('deviceorientation', function(eventData) {
        // gamma is the left-to-right tilt in degrees
        console.log(eventData.gamma);
        x.innerHTML = eventData.gamma;
        // beta is the front-to-back tilt in degrees
        console.log(eventData.beta);
        y.innerHTML = eventData.beta;
        // alpha is the compass direction the device is facing in degrees
        console.log(eventData.alpha);
        z.innerHTML = eventData.alpha;
    }, false);
}

它向我展示了大量快速变化的数据! 但是当我 Handlebars 机放在 table 上时,它会不断更改数据,就像我移动设备一样。 那么如何检查用户是否移动了其电话/设备? 我真的想不通,如果你能帮我处理你的代码和解释,或者甚至告诉我一个网站,我将不胜感激! 在一个完美的世界中:

if(user.touchDevice){alert("YOU TOUCHED PHONE!!!");}

非常感谢!对不起我的英语:)

最佳答案

您无法可靠地检测触摸设备。您可以检测 Touch Events API 等浏览器功能(可以在非触摸设备的浏览器中启用)或使用媒体查询根据屏幕尺寸假设触摸功能(小型设备几乎总是有触摸屏)。

请阅读这篇文章以获取详细说明和可能的解决方案: http://www.stucox.com/blog/you-cant-detect-a-touchscreen/

这是 Modernizr 用来检测“touchevents”的代码:

if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) { 
    // Touch events are supported
}

https://github.com/Modernizr/Modernizr/blob/master/feature-detects/touchevents.js

关于javascript - 如何检查用户是否使用 javascript 触摸设备(智能手机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148478/

相关文章:

JavaScript anchor 链接

由 html5sortable 的 sortupdate 触发的 JavaScript 运行了两次

java - 如何检测Android手机的方向从水平位置到垂直位置的变化?

IOS 设备方向停留在纵向模式,没有横向

ios - UIWindow endDisablingInterfaceAutorotationAnimated : error

javascript - 如何从 12 位数字的开头获取所有文本并使用正则表达式对它们进行分组

javascript - 如何在文档准备好时折叠 Accordion

javascript - 如何使用ajax更新select2下拉列表中的数据

javascript - CSS 使用媒体查询(或 jQuery)将所有元素的宽度加倍

javascript按钮在html中不起作用