De nos jours, résoudre ce problème est beaucoup plus à portée de main. L' API Historique HTML5 nous permet de manipuler la barre d'adresse pour afficher n'importe quelle URL dans le domaine actuel.
function removeHash () {
history.pushState("", document.title, window.location.pathname
+ window.location.search);
}
Démo de travail: http://jsfiddle.net/AndyE/ycmPt/show/
Cela fonctionne dans Chrome 9, Firefox 4, Safari 5, Opera 11.50 et dans IE 10. Pour les navigateurs non pris en charge, vous pouvez toujours écrire un script dégradant gracieusement qui l'utilise lorsqu'il est disponible:
function removeHash () {
var scrollV, scrollH, loc = window.location;
if ("pushState" in history)
history.pushState("", document.title, loc.pathname + loc.search);
else {
// Prevent scrolling by storing the page's current scroll offset
scrollV = document.body.scrollTop;
scrollH = document.body.scrollLeft;
loc.hash = "";
// Restore the scroll offset, should be flicker free
document.body.scrollTop = scrollV;
document.body.scrollLeft = scrollH;
}
}
Vous pouvez donc vous débarrasser du symbole de hachage, mais pas dans tous les navigateurs - pour le moment.
Remarque: si vous souhaitez remplacer la page actuelle dans l'historique du navigateur, utilisez replaceState()
plutôt que pushState()
.