Javascript 检测设备运动/方向支持?

Javascript 检测设备运动/方向支持?,javascript,accelerometer,event-listener,device-orientation,devicemotion,Javascript,Accelerometer,Event Listener,Device Orientation,Devicemotion,我正在寻找一种方法来检查设备是否支持DeviceOrientationEvent或DeviceMotionEvent更准确地说,我不知道该设备是否真的有加速计 不幸的是window.DeviceMotionEvent和window.ondevicemotion分别window.DeviceOrientationEvent和window.ondeviceorientation存在,尽管该设备-MacBook Retina-没有加速计 我很清楚,如果从未触发事件,eventlistener的回调函数

我正在寻找一种方法来检查设备是否支持DeviceOrientationEvent或DeviceMotionEvent更准确地说,我不知道该设备是否真的有加速计

不幸的是
window.DeviceMotionEvent
window.ondevicemotion
分别
window.DeviceOrientationEvent
window.ondeviceorientation
存在,尽管该设备-MacBook Retina-没有加速计

我很清楚,如果从未触发事件,eventlistener的回调函数也将永远不会运行。但在我的例子中,我的程序需要知道设备是否有加速计,因为如果没有加速计,用户应该收到通知

不幸的是,这篇文章的答案并不能解决我的问题


鉴于您的程序需要一个加速计功能才能正常运行,我假设如果没有加速计功能,您正在阻止它的执行


因此,您的程序可以在默认情况下“阻塞”,并侦听单个deviceMotionEvent,它将初始化整个程序,最终绑定到window.ondevicemotion。这样,您就不需要使用setTimeout来阻止的执行;deviceMotionEvent可能会在窗口加载后很快被触发。

我不知道OnDevicMotion事件有多精确,但是否可以接受监听该事件,如果在(比如)5秒内没有收到此类事件,则该设备要么放在桌子上,由一个铁把手的人握住,或者没有加速度计?你说得对。这是一种可能的方式,我也想到了。这个解决方案有一个问题,我必须等待一段时间(只有一点点,因为
devicemotion
经常触发)才能得到这个检查的答案。在我的情况下,我真的需要从一开始就知道设备是否有加速计,因为如果设备没有加速计,用户将被转发到另一个页面。。。