我正在寻找一种方法来检查设备是否支持DeviceOrientationEvent或DeviceMotionEvent。更准确地说,我不想知道设备是否真的有加速度计。
不幸的是,window.DeviceMotionEvent
和window.ondevicemotion
分别存在,window.DeviceOrientationEvent
和window.ondeviceorientation
,尽管设备- MacBook Retina -没有加速度计。
我很清楚,如果事件从未被触发,事件监听器的回调函数也将永远不会运行。但在我的例子中,我的程序需要知道设备是否有加速度计,因为如果没有加速度计,用户应该收到通知。
遗憾的是,这篇文章的答案对我的问题不起作用。
- 检测对给定JavaScript事件的支持?
考虑到你的程序需要有一个加速度计功能来运行,我假设你正在阻止它的执行,如果没有。
所以你的程序可以在默认情况下'block',并监听单个deviceMotionEvent,它将初始化整个程序,最终绑定到window.ondevicemotion。这样你就不需要用setTimeout来阻塞for的执行;deviceMotionEvent可能会在窗口加载后很快被触发。