Changer l'URL de Javascript comme Facebook fait

Je travaille actuellement dans une application Web orientée AJAX. J'ai cherché les différentes façons de reproduire l'état AJAX actuel (ou l'état de l'application) avec l'URL des navigateurs, de sorte que le rafraîchissement et le bouton arrière fonctionnent également.

Au cours des dernières semaines, je vois différentes approches impliquant l'utilisation du hash (#) et des frameworks JS différents.

Dans la documentation, il est indiqué que la modification de l'URL des navigateurs de JS n'est pas possible. Aujourd'hui, je suis allé à Facebook et j'ai ouvert une image, et l'URL a changé (bien que l'image ait été ouverte dans une lightbox). Une fois l'image fermée, l'URL du navigateur est retournée à la page d'origine.

Avez-vous une idée de comment ils parviennent à ce comportement?

Vous pouvez manipuler la valeur à la fin de l'URL comme ceci:

var hashVal = 'somevalue'; window.location.hash = '#' + hashVal; 

Et puis, l'URL deviendra www.something.com/#somevalue

Il existe une fonctionnalité de HTML5 qui prend en charge ce que vous faites référence. Voir http://spoiledmilk.dk/blog/html5-changing-the-browser-url-without-refreshing-page .

Certains systèmes l'implémentent en vérifiant que window.history.pushState, et si c'est le cas, en l'utilisant, sinon, revenir aux hashtags. Si SEO est préoccupant, utilisez #! au lieu de #. Voir http://code.google.com/intl/es/web/ajaxcrawling/docs/getting-started.html .

J'espère que cela pourra aider.

Vous pouvez manipuler la valeur de hachage telle que Neal l'a souligné. Mais je recommanderais d'utiliser une bibliothèque pour faire la même chose. Voici ce que j'utilise

http://developer.yahoo.com/yui/history/

Les valeurs de hachage dans l'URL sont manipulées principalement pour l'intégration des favoris et des favoris. J'espère que cela t'aides.