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