当前位置: 首页 > news >正文

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

先说问题:浏览器有一个自带原生的获取手机方向的事件方法 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-varsthrottle(function (e) {// console.log(e.alpha, e.beta, e.gamma);// 处理你要处理的事情throttlePosition(e);}, 300),false,);} else {alert('您的手机不支持陀螺仪哦~');}
}
monitor();

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


http://www.mrgr.cn/news/80827.html

相关文章:

  • 大腾智能CAD:国产云原生三维设计新选择
  • CVE-2023-0562【春秋云镜】
  • 【ETCD】【源码阅读】深入解析 EtcdServer.applySnapshot方法
  • 红黑树与布隆过滤器的了解
  • Windows子系统Ubuntu本地部署xinference以及接入dify详解
  • 计算机进制的介绍
  • Java收发邮件 Jakarta mail
  • 每日十题八股-2024年12月19日
  • el-table 多表头+跨行跨列案例
  • 使用Gradio编写大模型ollama客户端 -界面版
  • Kaggler日志--Day9
  • Docker:Dockerfile(补充四)
  • 【Rust自学】4.1. 所有权:栈内存 vs. 堆内存
  • 【Linux】NET9运行时移植到低版本GLIBC的Linux纯内核板卡上
  • 初学stm32 ——— 串口通信
  • Qt Quick:CheckBox 复选框
  • Spring Boot 配置Kafka
  • 【0371】Postgres内核 实现构建一个 WAL record
  • 【java面向对象编程】第二弹----成员方法
  • 基于DockerCompose搭建Redis主从哨兵模式
  • js分页功能
  • 【Python】使用Selenium 操作浏览器 自动化测试 记录
  • regression里面的误差来源
  • Pytorch | 从零构建AlexNet对CIFAR10进行分类
  • Linux函数栈帧
  • windows上安装Redis