在页面加载时使用设备方向

Using Device Orientation on page load

我正在尝试通过 deviceorientation 事件获取 alpha、beta 和 gamma 坐标。

我的代码:

window.addEventListener('deviceorientation', function(event) {
  alert(event.alpha + ' : ' + event.beta + ' : ' + event.gamma);
});

JS Fiddle: https://jsfiddle.net/myL17nzt/

这对于在设备移动时不断获取坐标非常有用,但我只想在页面加载时获取坐标,而不是让它监听移动。我尝试将 window.addEventListener 更改为 window.onload,但这并没有奏效。

有什么办法可以做到这一点吗?

谢谢!

也许你可以设置一个变量来控制初始 运行 和其余的。像这样:

   var initial = true;    
   window.addEventListener('deviceorientation', deviceOrientation(event) {
     if (initial) {
       alert(event.alpha + ' : ' + event.beta + ' : ' + event.gamma);
       initial = false;
     }
   });

可能不是最好的解决方案,但我现在能想到的最快的解决方案。

最好让侦听器自己移除。

function deviceOrientation(event) {
  alert(event.alpha + ' : ' + event.beta + ' : ' + event.gamma);
  window.removeEventListener('deviceorientation', deviceOrientation);
}
window.addEventListener('deviceorientation', deviceOrientation);

这样您就不会为您不关心的事件调用它。一些库有一个名为 once 的函数,它会在第一次事件发生后删除事件侦听器。