2010-08-28 21 views
0

Y a-t-il un moyen de changer l'URL ou d'ajouter plus d'historique au "bouton de retour" sans avoir à actualiser la page entière?Quelles sont mes options pour modifier la chaîne de requête sur une URL et mettre à jour l'historique du navigateur?

Mon application est basée sur AJAX et j'aimerais ajouter des événements "annuler" à l'historique afin que l'utilisateur puisse simplement reculer et conserver les anciennes valeurs.

Qu'est-ce possible aujourd'hui? J'entends certains de cela peut-être en HTML5, mais n'ont pas vérifié ce qui est pris en charge dans les navigateurs actuels.

Répondre

2

Je pense que vous pouvez utiliser window.location.hash pour suivre la #part de la page, dans votre cas, #state1, #state2 et ainsi de suite.

window.location.hash = '#state' + (++ stateN) pour définir et stateN = parseInt(window.location.hash.match(/\d+$/)[0])

Voir On - window.location.hash - Change? pour plus de détails sur la façon de détecter l'emplacement des changements de hachage.

0

Vous pouvez utiliser 301 redirection. Personnellement, j'utiliserais des cookies du côté client, ou des sessions dans votre backend, pour stocker les fils d'Ariane. Stocker des informations d'état dans l'URL est une mauvaise idée pour les applications AJAX, car les utilisateurs peuvent retourner à une URL que le serveur n'est pas dans le bon état pour répondre.

Une autre option serait de fournir votre propre bouton Retour qui sait à quelle page revenir.

0

La réponse à cette question sera plus ou moins la même chose que mes réponses à ces questions:

En résumé, deux projets que vous aurez probablement veulent regarder qui expliquent l'ensemble du processus hashchange et l'utiliser avec ajax sont:

  • jQuery History (en utilisant des hachages pour gérer l'état de vos pages et vous lier aux modifications pour mettre à jour votre page).

  • jQuery Ajaxy (extension ajax pour jQuery History, pour permettre des sites web ajax complets tout en étant complètement discret et facilement dégradable).