2009-06-01 10 views
6

Mamy funkcję javascript, która powinna "przenieść" stronę do określonej pozycji za pomocą kotwic. Ta funkcja po prostu ma wartość window.location.href = "#" + hashName. Działa to w trybie FF, ale nie w IE. Testowałem ten kod używając IE7 pod Windows XP. Próbowałem using window.location.href, window.location.hash, window.location.replace i wszystkie te sposoby, ale przy użyciu obiektu document. Czy ktoś wie, jak radzić sobie z tym problemem?Problem window.location.hash w IE7

+0

Co masz na myśli z 'przy użyciu obiektu document'? Powinieneś użyć 'window.location' zgodnie z sugestią w odpowiedziach -' document.location' jest specyficzna dla Gecko! – Christoph

+0

Użyłem ich obydwu - i one nie działają –

+0

Vladimir, pracuje dla mnie w IE7/XP ... – James

Odpowiedz

6

IE i większości innych przeglądarek przewinąć do kotwicy z anchor.focus(), lub do dowolnego elementu z id z element.scrollIntoView (prawdziwego)

+0

Dzięki, to działa. –

+0

Dobrze działa. +1 –

2

Czy próbowałeś zmienić tylko location.hash?

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

Próbowałem tego, ale to też nie działa –

+0

Nie jestem zaznajomiony z tym. wygląda dobrze. * przechodzi do testu ... * –

+0

działa w firefox 3 –

4

I justed przetestowane w IE7 w systemie Vista , może problem występuje tylko w IE7 pod XP? Ponieważ to działa dobrze dla mnie w IE7, Chrome i Firefox:

window.location.hash = hashName; 

Jeżeli to naprawdę nie działa wtedy moglibyśmy użyć scrollIntoView jak sugeruje 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); 
} 

Zastosowanie tak:

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