【问题标题】:Detecting device motion/orientation support?检测设备运动/方向支持?
【发布时间】:2014-05-15 16:22:07
【问题描述】:

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

不幸的是 window.DeviceMotionEventwindow.ondevicemotion 分别存在 window.DeviceOrientationEventwindow.ondeviceorientation 尽管设备 - MacBook Retina - 没有加速度计。

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

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

【问题讨论】:

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

标签: javascript accelerometer event-listener device-orientation devicemotion


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    相关资源
    最近更新 更多