Quizá en algún momento el valor del
scroll sea menor que cero, con lo cual seguirá siendo diferente a dicho valor y por eso la función se sigue ejecutando. Yo lo haría así:
Código Javascript
:
Ver originalfunction scrollToTop() {
var scroll = window.scrollY;
if (scroll){
var aux = scroll,
interval = setInterval(function(){
aux -= 100;
window.scroll(0, aux);
if (aux <= 0) clearInterval(interval);
}, 1);
}
}
De este modo, tomo el valor desplazado por la barra de desplazamiento y si este es mayor a cero, asigno dicho valor a una variable auxiliar, a la cual le iré disminuyendo el valor asignado de 100 en 100 y será su valor actualizado el que usaré para desplazar a la barra hacia la parte superior. Esto se repetirá cada milésima de segundo hasta que el valor de la variable auxiliar sea menor o igual a cero, en ese momento se termina el ciclo.
Saludos