如何避免连续触发HTML5 DeviceOrientationEvent

时间:2016-12-09 11:28:19

标签: javascript html5

我正在尝试根据HTML5 DeviceOrientation事件倾斜图像。但是,我发现即使设备稳定,即非旋转/不移动,事件也会不断发射。在以下代码段中,将连续打印控制台日志。可能的原因是什么,我怎么能阻止它。

我尝试了捕捉和冒泡,

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

1 个答案:

答案 0 :(得分:0)

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

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

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);
  }