page - javascript injection tutorial
En un navegador, Break on Window Scroll (2)
No tengo ninguna idea adicional sobre la ruptura en realidad que los presentados.
Pero sospecho que no es el desplazamiento lo que causa el problema, sino un ''#'' en el html.
<a href="#" onclick="return false;">x</a>
es un patrón muy común. cuando olvida (o algo impide) el "retorno falso", el # (anclaje vacío) se desplazará a, lo que hace que un desplazamiento hacia arriba.
¡Comprueba si la URL tiene un # al final después de hacer clic!
En Chrome Devtools, puede deshabilitar Javascript al cambiar los atributos de un elemento DOM, o en modificaciones de subárbol de un elemento.
Estoy trabajando en algún código heredado que tenga algún javascript que se desplaza hacia la parte superior de la página en determinadas situaciones, y quiero encontrar el JS que hace esto.
¿Hay alguna manera, en Devtools, de romper los eventos de desplazamiento?
Podría ser jQuery o Prototype.js o JS base de eventos que lo haga, y he buscado en la base de código para .scrollTop o .animate, y he encontrado muchos de ellos, pero ninguno que esté causando mi problema.
Puede inyectar esta línea de JS utilizando la consola para activar el depurador cuando la posición de desplazamiento cambie programáticamente.
window.__defineSetter__("pageYOffset", function(){
debugger;
});
Luego, vea la pila de llamadas para ver qué lo activó.
Si no desea activar el depurador, puede imprimir el rastreo de la pila en el lugar con el siguiente código:
window.__defineSetter__("pageYOffset", function(){
console.log(new Error().stack);
});
Otra opción es reemplazar el scroll
Windows, el método scrollTo
y scrollBy
con el tuyo.
window.__defineGetter__(''scroll'', function(){
console.log(''window.scroll getter :'' + new Error().stack);
return function(x,y){
debugger; //or print stack trace
oldScroll(x,y);
}
});
Repita para scrollTo
y scrollBy
.