We have a javascript function that should "move" a page to a certain position using anchors. This function just does window.location.href = "#" + hashName
. This works in FF, but not in IE. I tested this code using IE7 under Windows XP.
I have tried using window.location.href
, window.location.hash
, window.location.replace
and all these ways, but using document
object.
Does anyone know how to deal with this issue?
Asked
Active
Viewed 1.7k times
6

Kara
- 6,115
- 16
- 50
- 57

Vladimir Kadalashvili
- 747
- 2
- 5
- 17
-
What do you mean with 'using document object'? You should use `window.location` as suggested in the answers - `document.location` is Gecko-specific! – Christoph Jun 01 '09 at 13:54
-
I used both of them - and they don't work – Vladimir Kadalashvili Jun 01 '09 at 14:24
-
Vladimir, works for me in IE7/XP ... – James Jun 01 '09 at 15:50
4 Answers
6
IE and most other browsers will scroll to an anchor with anchor.focus(), or to any element with an id with element.scrollIntoView(true)

kennebec
- 102,654
- 32
- 106
- 127
4
I justed tested this in IE7 under Vista, maybe the issue only exsists in IE7 under XP? Because this works fine for me in IE7, Chrome and Firefox:
window.location.hash = hashName;
If this really doesn't work then we could use scrollIntoView as Kennebec suggests.
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);
}
Use like this:
<script type='text/javascript'>scrollIToAnchor('foo');</script>
<a name='foo'></a>
<p>I will be scrolled into view</p>

Pim Jager
- 31,965
- 17
- 72
- 98
2
Have you tried changing just location.hash
?
window.location.hash = "#" + hashName;

Gumbo
- 643,351
- 109
- 780
- 844
-
not familiar with this. looks good, though. *goes to test...* – Jonathan Fingland Jun 01 '09 at 13:45
0
There is also a problem i came across
http://artur.ejsmont.org/blog/content/window-location-hash-difference-in-ff3-and-opera

Art79
- 313
- 2
- 5
- 16