Mise à jour de la barre d'adresse avec une nouvelle URL sans hachage ou rechargement de la page
soit j'ai rêvé de chrome (dev channel) implémentant une façon de mettre à jour la barre d'adresse via javascript (le chemin, pas le domaine) sans recharger la page, soit ils l'ont vraiment fait.
Cependant, je ne peux pas trouver l'article que j'ai penser j'ai lu.
suis-je fou ou y a-t-il un moyen de le faire (en Chrome)?
p. S. Je ne parle pas de fenêtre.emplacement.de hachage, et al. Si ce qui précède existe la réponse à cette question sera faux.
3 réponses
vous pouvez maintenant faire cela dans la plupart des navigateurs "modernes"!
Voici l'article original que j'ai lu (Posté le 10 juillet, 2010): HTML5: changer le navigateur-URL sans page rafraîchissante .
Pour un regard plus en profondeur dans pushState/replaceState/popstate (aka le HTML5 Histoire de l'API) voir le MDN docs .
TL;DR, vous pouvez faire ceci:
window.history.pushState("object or string", "Title", "/new-url");
voir ma réponse à modifier l'URL sans recharger la page pour un mode d'emploi de base.
changer seulement ce qui est après le hachage-vieux navigateurs
document.location.hash = 'lookAtMeNow';
changer L'URL complète. Chrome, Firefox, IE10+
history.pushState('data to be passed', 'Title of the page', '/test');
le ci-dessus ajoutera une nouvelle entrée à l'histoire de sorte que vous pouvez appuyer sur le bouton Précédent pour aller à l'état précédent. Pour changer L'URL en place sans ajouter une nouvelle entrée à l'histoire utiliser
history.replaceState('data to be passed', 'Title of the page', '/test');
essayez de les exécuter dans la console maintenant!
mise à jour de Davids réponse à même de détecter les navigateurs ne supporte pas pushstate:
if (history.pushState) {
window.history.pushState("object or string", "Title", "/new-url");
} else {
document.location.href = "/new-url";
}