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.

535
demandé sur Community 2010-07-27 00:18:20
la source

3 ответов

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.

750
répondu David Murdoch 2017-05-23 14:54:57
la source

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!

112
répondu Pawel 2018-06-17 23:02:00
la source

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";
}
10
répondu metamagicson 2017-07-04 14:01:52
la source

Autres questions sur javascript ajax google-chrome