¿Cómo puedo centrarme en un elemento HTML (por ejemplo, "a") y no cambiar la configuración de desplazamiento actual?
por ej. si uso:
$('#link').focus();
y este enlace no está visible en la pantalla (p. ej., está debajo del área visible), el navegador se desplaza hacia abajo para mostrar el elemento. ¿Cómo puedo establecer el enfoque sin mover la barra de desplazamiento? Necesito mantener la barra de desplazamiento en el lugar original.
He intentado esto, pero produce un parpadeo en la pantalla, y es un truco, no una solución elegante:
var st=$(document).scrollTop(); $('#link').focus(); $(document).scrollTop(st);
¿Puede alguien ayudarme, por favor?
Prueba esto:
$.fn.focusWithoutScrolling = function(){ var x = window.scrollX, y = window.scrollY; this.focus(); window.scrollTo(x, y); return this; //chainability };
y luego
$('#link').focusWithoutScrolling();
Editar:
Se ha informado que esto no funciona en IE10. La solución probable sería utilizar:
var x = $(document).scrollLeft(), y = $(document).scrollTop();
pero no lo he probado.
Use la {preventScroll: true}
en el método de enfoque. https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus
Si usa jQuery, pruebe $('#el')[0].focus({preventScroll: true})
o itere sobre cada uno en su colección
$('#link').css('position', 'fixed').focus().css('position', 'static')
funciona en Firefox.
( Editar : no deberías usar este truco)