web-dev-qa-db-fra.com

Comment remplacer le hachage d'URL d'une fenêtre par une autre réponse?

J'essaie de changer une URL hachée (document.location.hash) avec la méthode replace, mais cela ne fonctionne pas.

$(function(){
 var anchor = document.location.hash;
 //this returns me a string value like '#categories'

  $('span').click(function(){

     $(window).attr('url').replace(anchor,'#food');
     //try to change current url.hash '#categories'
     //with another string, I stucked here.
  });

});

Je ne veux pas changer/rafraîchir la page, je veux juste remplacer l'URL sans aucune réponse.

Remarque: je ne veux pas résoudre ce problème avec une solution href = "# food".

53
Barlas Apaydin

Utilisez location ou window.location au lieu de document.location car ce dernier n'est pas standard.

window.location.hash = '#food';

Cela remplacera le hachage de l'URL par la valeur que vous lui avez définie.

Référence

101
Fabrício Matté

Vous pouvez préférer la réponse de cette question .

La différence étant qu'avec history.replaceState() vous ne faites pas défiler jusqu'à l'ancre, remplacez-la seulement dans la barre de navigation. Il est pris en charge par tous les principaux navigateurs, source .

history.replaceState(undefined, undefined, "#hash_value")
25
arcs