(function() { var debounce = function(func, delay) { var inDebounce; return function() { var context = this; var args = arguments; clearTimeout(inDebounce); inDebounce = setTimeout(function() { func.apply(context, args); }, delay); } } var scrollHeight = document.documentElement.scrollHeight - window.innerHeight; var quarterHeight = scrollHeight / 4; var quarters = 0; var scrollDistance, divisible, percent; document.addEventListener("scroll", debounce(function() { scrollDistance = window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop; divisible = Math.trunc(scrollDistance / quarterHeight); if (quarters < divisible) { scrollPercent = divisible * 25; heap.track('Scroll Depth', { percent: scrollPercent }); quarters++; } }, 100)); }());Dentro del detector de eventos, scrollHeight siempre es 0 cuando imprimo la consola. ¿Porqué es eso? Lo probé en Chrome. Es como si el cierre no capturara scrollHeight.
Cuando muevo la línea dentro del cierre, funciona.