关于在浏览器里面获取手机方向的事件

先说问题:浏览器有一个自带原生的获取手机方向的事件方法 deviceorientation : https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent

这个事件里面有个实例absolute 看名字知道意思吧,对就是绝对坐标的意思,如果带了absolute就是用地球绝对坐标,如果不带absolute那么就用的你自己手机设备的相对坐标来参照返回给你当前的aplha,beta,gamma数据;最开始捣鼓了很久发现不同的手机那个位置怎么都不对,直接心态崩了,然后无意中发现的居然还有个带absolute的事件,联想到他的实例熟悉就试了一下,然后就发现了这个大坑。

所以正确的打开方式是使用 deviceorientationabsolute 事件

好了,下面上代码

复制代码
function monitor() {
  //window.DeviceMotionEvent 需使用https 才能拿到这个对象  或者低版本的android机器可以使用http拿到这个陀螺仪设备
  if (process.env.IS_DEV || window.DeviceMotionEvent) {
    //陀螺仪这里使用absolute方法来监听方向  如果不带absolute的事件那么用的是相对于手机自带的坐标系 来返回的参数
    //如果用来absolute的事件那么返回的是相对于地球坐标系的数据
    window.addEventListener(
      'deviceorientationabsolute',
      // eslint-disable-next-line @typescript-eslint/no-unused-vars
      throttle(function (e) {
        // console.log(e.alpha, e.beta, e.gamma);
        // 处理你要处理的事情
        throttlePosition(e);
      }, 300),
      false,
    );
  } else {
    alert('您的手机不支持陀螺仪哦~');
  }
}
复制代码
monitor();

重要的坑说三遍,由于不同的手机可能不一样。一定要用带absolute的事件方法,一定要用带absolute的事件方法,一定要用带absolute的事件方法。

相关推荐
shuaiqinke18 小时前
【分享】Master PDF Editor v5.9.98便携版 多功能PDF编辑工具
智能手机·pdf
2601_9574188021 小时前
深入解析Android相机有线连接:PTP与MTP协议栈实现原理与实践
android·数码相机·智能手机
第五文修1 天前
手机OTG转TTL网口实现ping功能
网络·智能手机
蒂法就是我2 天前
CAD专业看图师手机版安装使用教程
智能手机·cad看图
Kurisu5752 天前
FilzaCracked_4.0.0_TS.ipa2026最新官方正版免费下载 一键转存 永久更新 (看到速转存 资源随时走丢)手机版通用
ios·智能手机·电脑·巨魔
shandianchengzi2 天前
【科普】安卓|安卓手机上如何简便实现Ctrl+Z(需要键盘或一台Windows电脑)
android·windows·智能手机·计算机外设·安卓·科普·记录
南山有乔木7893 天前
手机酷狗音乐kgg/kgm怎么转mp3?歌曲转MP3方法分享,解决格式不支持问题
智能手机
七牛云行业应用3 天前
OpenAI Codex手机版上线实战:iOS/Android 5步配置远程控制指南(2026)
android·ios·智能手机
2601_954706493 天前
2026 年上半年云手机横评:傲晨云 / 掌派 / ACE 深度实测
智能手机
shuaiqinke3 天前
【分享】OrbitV工具箱| 手表手环全能适配 |表盘应用一键装
android·智能手机