2009-06-01 2 views
6

Wir haben eine JavaScript-Funktion, die eine Seite mit Anker an eine bestimmte Position "verschieben" soll. Diese Funktion funktioniert nur window.location.href = "#" + hashName. Dies funktioniert in FF, aber nicht in IE. Ich habe diesen Code mit IE7 unter Windows XP getestet. Ich habe versucht using window.location.href, window.location.hash, window.location.replace und all diese Möglichkeiten, aber mit document Objekt. Kann jemand mit diesem Problem umgehen?window.location.hash Problem in IE7

+0

Was meinen Sie mit 'Dokument-Objekt'? Sie sollten 'window.location' wie in den Antworten vorgeschlagen verwenden -' document.location' ist Gecko-spezifisch! – Christoph

+0

Ich habe beide verwendet - und sie funktionieren nicht –

+0

Vladimir, funktioniert für mich in IE7/XP ... – James

Antwort

6

IE und die meisten anderen Browser auf einen Anker mit anchor.focus() oder auf ein beliebiges Element mit einer ID mit element.scrollIntoView (true)

+0

Danke, es funktioniert. –

+0

Gut gearbeitet. +1 –

2

Haben Sie versucht, nur location.hash zu ändern?

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

Ich habe es versucht, aber es funktioniert auch nicht –

+0

nicht vertraut mit diesem. sieht gut aus. * geht zu testen ... * –

+0

funktioniert in Firefox 3 –

4

I getestet nachgeführt dies in IE7 unter Vista scrollt , vielleicht besteht das Problem nur in IE7 unter XP? Weil das für mich funktioniert in IE7, Chrome und Firefox:

window.location.hash = hashName; 

Wenn dies wirklich nicht funktioniert, dann könnten wir verwenden ScrollIntoView als Kennebec vermuten lässt.

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); 
} 

Verwendung wie folgt aus:

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