注意:
1、必须要在https协议下才可以正确获取权限哦~
2、iOS端需要单独请求一个权限,要做个处理,Android则无需授权,授权也报错(
代码:
<!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <meta name=”viewport” content=”width =device-width, initial-scale=1.0″> <title>获取陀螺仪</title> </head> <body> <div> <button onclick=”goStart()”>开始!</button> <p id=”z”>z轴</p> <p id=”x”>x轴</p> <p id=”y”>y轴</p> </div> <script> var z = document.getElementById(‘z’) var x = document.getElementById(‘x’) var y = document.getElementById(‘y’) function goStart() { let u = navigator.userAgent; let isIOS = u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); if (isIOS) { getPermission();//iOS需要授权 } else { addListener();//其他设备无需授权 } } function getPermission() { // DeviceOrientationEvent.requestPermission() 获取权限的,会弹出“xxx想要访问动作与方向”的确认框 // DeviceOrientationEvent.requestPermission() 返回的是一个promise对象 window.DeviceOrientationEvent.requestPermission().then(res => { // granted 是允许了 denied 是拒绝了 console.log(‘res’, res); if (res === ‘granted’) { console.log(‘allowed.’); addListener(); } else { alert(‘没能获取权限,无法正常操作,请重新打开应用准许本次操作,方可正常操作’) } }).catch (err => { console.log(‘err’, err); }) } function addListener() { window.addEventListener(‘deviceorientation’, function (event) { // event.alpha 设备绕 z 轴旋转的角度(0 ~ 360)数字之间 // event.beta 设备绕 x 轴旋转的角度(-180 ~ 180)数字之间 // event.gamma 设备绕 y 轴旋转的角度(-90 ~ 90)数字之间 //ceil可加可不加,iOS这不知道为什么数据 z.innerText = ‘z轴’ + Math.ceil(event.alpha) x.innerText = ‘x轴’ + Math.ceil(event.beta) y.innerText = ‘y轴’ + Math.ceil(event.gamma) }); } </script> </body> </html>
微信扫码查看本文
发表评论