7

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

不幸的是window.DeviceMotionEvent,尽管设备 - MacBook Retina - 没有加速度计,但它们仍然存在。window.ondevicemotionwindow.DeviceOrientationEventwindow.ondeviceorientation

我很清楚,如果从不触发事件,事件监听器的回调函数也将永远不会运行。但就我而言,我的程序需要知道设备是否有加速度计,因为如果没有加速度计,用户应该收到通知。

不幸的是,这篇文章的答案对我的问题不起作用。

4

1 回答 1

3

鉴于您的程序需要具有加速度计功能才能运行,我假设您正在阻止它的执行(如果没有)。

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

于 2014-09-19T19:15:40.490 回答