Я сделал скрипт, используя вложенные интервалы, чтобы проверить, находится ли текущий 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);
}