2009-06-01 9 views
6

Tenemos una función de javascript que debe "mover" una página a una posición determinada mediante el uso de anclajes. Esta función solo hace window.location.href = "#" + hashName. Esto funciona en FF, pero no en IE. Probé este código usando IE7 bajo Windows XP. He intentado using window.location.href, window.location.hash, window.location.replace y todas estas formas, pero usando el objeto document. ¿Alguien sabe cómo lidiar con este problema?problema window.location.hash en IE7

+0

¿Qué quiere decir con 'el uso de objeto de documento'? Debería usar 'window.location' como se sugiere en las respuestas -' document.location' es Gecko-specific! – Christoph

+0

He usado ambos - y no funcionan –

+0

Vladimir, funciona para mí en IE7/XP ... – James

Respuesta

6

IE y la mayoría de los navegadores se desplazarán a un ancla con anchor.focus(), o para cualquier elemento con un id con element.scrollIntoView (verdadero)

+0

Gracias, funciona. –

+0

Funcionó bien. +1 –

2

¿Has intentado cambiar solo location.hash?

window.location.hash = "#" + hashName; 
+1

He intentado esto, pero tampoco funciona –

+0

no estoy familiarizado con esto. se ve bien, sin embargo. * va a probar ... * –

+0

funciona en firefox 3 –

4

I justed probado esto en Internet Explorer 7 en Windows Vista , tal vez el problema solo exista en IE7 bajo XP? Debido a que esto funciona muy bien para mí en IE7, Chrome y Firefox:

window.location.hash = hashName; 

Si esto realmente no funciona, entonces podríamos usar scrollIntoView como sugiere Kennebec.

function scrollToAnchor(anchorName){ 
    //set the hash so people can bookmark 
    window.location.hash = anchorName; 
    //scroll the anchor into view 
    document.getElementsByName(anchorName)[0].scrollIntoView(true); 
} 

uso como esto:

<script type='text/javascript'>scrollIToAnchor('foo');</script> 
<a name='foo'></a> 
<p>I will be scrolled into view</p>