[removed] = #anchor doesn't work in IE

前端 未结 6 519
南笙
南笙 2020-12-10 09:24

On this map:

http://web.pacific.edu/documents/marketing/campus-map/version%202/stockton-campus-2.0.htm

I have an anchor at the top, and I want the page to ju

相关标签:
6条回答
  • 2020-12-10 09:47

    You have to check for hash before appending it. I did it with this,

    window.location = ((location.href).indexOf('#') == -1 ? location.href + "#top" : location.href);

    0 讨论(0)
  • 2020-12-10 09:48

    I have this code in production and it works fine in IE7...

    location.hash = "#top";
    

    However, if you are just trying to scroll to the top, this ought to be a lot easier...

    window.scrollTo(0, 0);
    
    0 讨论(0)
  • 2020-12-10 09:50

    The location object is broken up into several properties - href is only one of them

    Another one, hash, is what you're looking for.

    top.location.hash = 'top';
    

    You can also do this without using the location/href at all - just use scrollTo()

    top.scrollTo( 0, 0 );
    
    0 讨论(0)
  • 2020-12-10 09:53
    window.location.href = '#top';
    

    And if this doesn't work, try the full URL

    window.location.href = 'http://domain.com/my.html#top';
    
    0 讨论(0)
  • 2020-12-10 09:55

    I also had a problem with windows.location.hash working in all browsers but IE7 and IE8 (at least on Vista). After much experimenting, I discovered that page redirection was breaking hash assignment.

    An error will occur in IE7 or IE8 if you assign a value to windows.location.hash from within a page that was loaded as a result of redirection via the HTTP "Location" header.

    After discovering this, I was able to find a fix elsewhere on StackOverflow (see here). The solution is to have the browser redirect via Javascript. Here I repost the solution from the other StackOverflow page:

    <html>
    <head>
        <meta http-equiv="refresh" content="0; url=__REDIRECT_LOCATION__">
        <script>window.location = "__REDIRECT_LOCATION__";</script>
    </head>
    </html>
    

    This would explain why some people were having a problem with setting hash and some were not, but I do not know that the originator of the thread was redirecting.

    I should also point out that I couldn't just use scrollTo() because my purpose was to remove the hash tag from the address bar without reloading the page, not to scroll.

    0 讨论(0)
  • 2020-12-10 10:12

    location.href = location.href.split("#")[0] + "#top"

    EDIT: to avoid the possibility of ever having two hashes.

    0 讨论(0)
提交回复
热议问题