我使用嵌套间隔制作了一个脚本,以检查当前window.scrollY是否高于某个值。脚本有效并且输出正确,我的问题是Chrome显示“ [Violation]'setInterval'处理程序花费了ms'并一直持续执行此操作。
经过一定的滚动(已通过console.log输出确认)后,所有间隔都将清除,但仍然会向我发出这些警告。
如果有更好的方法可以做到这一点,我会很乐意听。 我试图避免检查不间断滚动事件,从而检查间隔。
此操作的目的是检查我的网上商店中的某些产品是否“可见”,以便可以将数据层发送到Google跟踪代码管理器。
就像我之前说的那样,代码可以正常工作,只是不断告诉我这些违规行为。我没有正确结束间隔吗?
建议的重复项没有提供任何解决方案
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);
}