我正在尝试基于HTML5 DeviceOrientation事件倾斜图像。但是,我看到即使设备稳定(即不旋转/不移动),事件也会持续触发。在以下代码片段中,控制台日志将连续打印。可能的原因是什么,我该如何制止它。

我尝试捕捉和冒泡,

  if (window.DeviceOrientationEvent) {
              window.addEventListener('deviceorientation', function(eventData) {
              var tiltLR = eventData.gamma;
              console.log("tiltLR..........",tiltLR);
              }, false);
            }

最佳答案

我之前不需要使用这种类型的事件侦听器,所以我对输出不熟悉。

但是,我相信您需要将旧倾斜度与新倾斜度进行比较。如果新的倾斜度实质上更大或更小,则执行代码。

if (window.DeviceOrientationEvent) {

       var originalTilt = undefined,
           tolerance = 5;

       window.addEventListener('deviceorientation', function(eventData) {

          if (eventData.gamma > originalTilt + tolerance ||
              eventData.gamma < originalTilt - tolerance){
              var tiltLR = eventData.gamma;
              console.log("tiltLR..........",tiltLR);
              originalTilt = tiltLR;
          }

       }, false);
  }

09-25 19:14