Window.location = #anchor ne fonctionne pas dans IE

Sur cette carte:

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

J'ai une ancre au sommet, et je veux que la page passe à l'ancre lorsqu'un lien est cliqué.

J'utilise actuellement

window.location = '#top'; 

Il fonctionne comme prévu dans FF, Opera et Chrome, mais pas dans IE 7.

J'ai essayé toutes les permutations comme window.location.hash et window.location.ignign () et aussi scrollIntoView (true) et focus ().

Comment puis-je le faire fonctionner dans IE?

Edit : Rien ne semble fonctionner, ce qui me fait penser que ce n'est pas la syntaxe, mais quelque chose à propos du JS … voici le gestionnaire d'événements de clic … pourrait-il être parce qu'il renvoie faux? Je saisis les pailles.

 // Click handler for each location link $('#index a').click(function() { hideMarkers(); location.href = location.href + "#top"; var marker = showMarker( $(this).attr('data-id') ); GEvent.trigger( marker, "click" ); return false; }); 

Modifier : Affectation à window.location.hash saute dans IE7 et IE8 sur les pages qui ont été chargées à la suite de la redirection de page via l'en-tête HTTP "Location". La solution est de renvoyer une page avec Javascript qui exécutera la redirection. Voir la réponse de Joe Lapp.

    J'ai ce code en production et ça marche bien dans IE7 …

     location.hash = "#top"; 

    Toutefois, si vous essayez juste de faire défiler jusqu'au sommet, cela devrait être beaucoup plus facile …

     window.scrollTo(0, 0); 

    L' objet de location est divisé en plusieurs propriétés – href n'est qu'un d'entre eux

    Un autre, hash , est ce que vous recherchez.

     top.location.hash = 'top'; 

    Vous pouvez également le faire sans utiliser l'emplacement / href du tout – utilisez simplement scrollTo ()

     top.scrollTo( 0, 0 ); 

    J'ai également eu un problème avec windows.location.hash fonctionnant dans tous les navigateurs, mais IE7 et IE8 (au moins sur Vista). Après de nombreuses expériences, j'ai découvert que la redirection de la page était en train de casser l'assignation au hash.

    Une erreur se produira dans IE7 ou IE8 si vous attribuez une valeur à windows.location.hash à partir d'une page chargée à la suite de la redirection via l'en-tête HTTP "Location".

    Après avoir découvert cela, j'ai pu trouver un correctif ailleurs sur StackOverflow ( voir ici ). La solution consiste à faire redirectionner le navigateur via Javascript. Ici, je repasse la solution à partir de l'autre page de StackOverflow:

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

    Cela expliquerait pourquoi certaines personnes éprouvaient un problème avec le réglage du hash et d'autres n'étaient pas, mais je ne sais pas que l'auteur du thread redirigeait.

    Je devrais également souligner que je ne pouvais pas utiliser scrollTo () parce que mon but était de supprimer la balise hash de la barre d'adresse sans recharger la page, et non pour faire défiler.

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

    EDIT: pour éviter la possibilité de jamais avoir deux hachis.

    Vous devez vérifier le hash avant de l'ajouter. Je l'ai fait avec ça,

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

     window.location.href = '#top'; 

    Et si cela ne fonctionne pas, essayez l'URL complète

     window.location.href = 'http://domain.com/my.html#top';