Pregunta

Considere el siguiente código:

<a href="#label2">GoTo Label2</a>
... [content here] ...
<a name="label0"></a>More content
<a name="label1"></a>More content
<a name="label2"></a>More content
<a name="label3"></a>More content
<a name="label4"></a>More content

¿Hay alguna manera de emular al hacer clic en " GoTo Label2 " enlace para desplazarse a la región apropiada en la página a través del código?

EDITAR : una alternativa aceptable sería desplazarse a un elemento con un ID único, que ya existe en mi página. Estaría agregando las etiquetas de anclaje si esta es una solución viable.

¿Fue útil?

Solución

Este JS generalmente me ha funcionado bien si también pones una ID en el elemento:

document.getElementById('MyID').scrollIntoView(true);

Esto es bueno ya que también posicionará divs desplazables, etc. para que el contenido sea visible.

Otros consejos

Uso de javascript:

window.location.href = '#label2';

Si necesita hacerlo desde el servidor / código detrás, puede emitir este Javascript y registrarlo como un script de inicio para esa página.

Moviéndose a un ancla desde el lado del servidor, el ejemplo es c #.

ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#form';", true);

Supongo que esto funcionará:

window.location="<yourCurrentUri>#label2";

La solución

document.getElementById('MyID').scrollIntoView(true);

funciona bien en casi todos los navegadores, mientras que he notado que en algunos navegadores o en algunos dispositivos móviles (como algunas versiones de Blackberry) " scrollIntoView " no se reconoce la función, por lo que consideraría esta solución (un poco más fea que la anterior):

window.location.href = window.location.protocol + "//" + window.location.host + 
                       window.location.pathname + window.location.search + 
                       "#MyAnchor";

Si el elemento es una etiqueta de anclaje, debería poder hacer:

document.getElementsByName('label2')[0].focus();

no " # " cuando usas window.location.hash

puede abrir la nueva URL con el nombre adjunto, por ejemplo http://www.example.com/mypage.htm#label2

En JavaScript,

location.href = location.href + '#label2';
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top