我正在寻找一种检查设备是否支持DeviceOrientationEvent或DeviceMotionEvent的方法。 更准确地说,我不知道设备是否真的有加速度计。
不幸的是window.DeviceMotionEvent
和window.ondevicemotion
分别存在window.DeviceOrientationEvent
和window.ondeviceorientation
,尽管设备 - MacBook Retina - 没有加速计。
我很清楚,如果事件永远不会被触发,事件监视器的回调函数也将永远不会运行。但在我的情况下,我的程序需要知道设备是否有加速度计,因为如果没有加速度计,用户应该收到通知。
不幸的是,这篇文章的答案并不能解决我的问题。
答案 0 :(得分:3)
鉴于你的程序需要加速计功能才能运行,我假设你没有阻止它的执行。
所以你的程序可以阻止'默认情况下,侦听单个deviceMotionEvent,它将初始化整个程序,最终将绑定到window.ondevicemotion。这样你就不需要用setTimeout阻止执行了;在窗口加载后,deviceMotionEvent可能会很快被触发。