我正在寻找一种检查设备是否支持DeviceOrientationEvent或DeviceMotionEvent的方法。更准确地说,我不想知道这个设备是否真的有一个加速度计。
不幸的是,window.DeviceMotionEvent和window.ondevicemotion分别存在window.DeviceOrientationEvent和window.ondeviceorientation,尽管MacBook Retina没有加速度计。
在我看来,如果事件从未触发,事件侦听器的回调函数也将永远不会运行。但在我的例子中,我的程序需要知道设备是否有加速度计,因为如果没有加速度计,用户应该收到通知。
不幸的是,这篇文章的答案并不能解决我的问题。
发布于 2014-09-19 19:15:40
考虑到您的程序需要有一个加速度计功能来运行,我假设您正在阻止它的执行,如果没有。
因此,默认情况下,您的程序可以“阻塞”,并侦听单个deviceMotionEvent,它将初始化整个程序,最终绑定到window.ondevicemotion。这样,您就不需要用setTimeout阻止执行;在加载窗口之后,很可能会很快触发deviceMotionEvent。
https://stackoverflow.com/questions/23683754
复制相似问题