Очищенные интервалы по-прежнему приводят к нарушению Chrome - PullRequest
0 голосов
/ 09 апреля 2019

Я сделал скрипт, используя вложенные интервалы, чтобы проверить, находится ли текущий window.scrollY выше определенного значения.Сценарий работает, и вывод правильный, моя проблема в том, что Chrome отображает «Обработчик [Violation] setInterval занял мс» и продолжает делать это вечно.

Все интервалы очищаются после определенной прокрутки (подтвержденос выводом console.log), но он по-прежнему выдает мне эти предупреждения.

Если есть лучший способ сделать это, я с удовольствием выслушаю. Я стараюсь не проверять событие непрерывной прокрутки,таким образом, интервалы.

Цель этого состоит в том, чтобы проверить, были ли "видны" определенные товары в моем интернет-магазине, чтобы я мог отправить слой данных в Google Tag Manager.

И, как я ранеесказал, что код работает нормально, он просто говорит мне об этих нарушениях .. Не правильно ли я закончил интервалы?

Предложенный дубликат не нашел решения

var r1, r2, r3, r4, r5, r6, r7, r8;
var tabletRowHeight = [-1,450,980,1470,1950,2440,2980,3460];

if (window.innerWidth > 768  && window.innerWidth < 1200) {
  gtmImpressions2x(tabletRowHeight);
}

function gtmImpressions2x(rH) {
  var row1 = setInterval(function() {
    if (window.scrollY > rH[0]) {
      if (r1 != 1) {
        clearInterval(row1);
        console.log("Datalayer Row 1");
        r1 = 1;
      }
    }  
    var row2 = setInterval(function() {
      if (window.scrollY > rH[1]) {
        if (r2 != 1) {
          clearInterval(row2);
          console.log("Datalayer Row 2");
          r2 = 1;
        }
      }
      var row3 = setInterval(function() {
        if (window.scrollY > rH[2]) {
          if (r3 != 1) {
            clearInterval(row3);
            console.log("Datalayer Row 3");
            r3 = 1;
          }
        }
        var row4 = setInterval(function() {
          if (window.scrollY > rH[3]) {
            if (r4 != 1) {
              clearInterval(row4);
              console.log("Datalayer Row 4");
              r4 = 1;
            }
          }
          var row5 = setInterval(function() {
            if (window.scrollY > rH[4]) {
              if (r5 != 1) {
                clearInterval(row5);
                console.log("Datalayer Row 5");
                r5 = 1;
              }
            }
            var row6 = setInterval(function() {
              if (window.scrollY > rH[5]) {
                if (r6 != 1) {
                  clearInterval(row6);
                  console.log("Datalayer Row 6");
                  r6 = 1;
                }
              }
              var row7 = setInterval(function() {
                if (window.scrollY > rH[6]) {
                  if (r7 != 1) {
                    clearInterval(row7);
                    console.log("Datalayer Row 7");
                    r7 = 1;
                  }
                }
                var row8 = setInterval(function() {
                  if (window.scrollY > rH[7]) {
                    if (r8 != 1) {
                      clearInterval(row8);
                      console.log("Datalayer Row 8");
                      r8 = 1;
                    }
                  }
                }, 500);  
              }, 500);  
            }, 500);  
          }, 500);                      
        }, 500);            
      }, 500);
    }, 500);
  }, 500);
}
...