2010-11-03 48 views
8

Est-ce possible avec JavaScript de changer l'URL du navigateur, mais pas de quitter la page?Comment changer l'URL affichée dans le navigateur sans quitter la page

+0

Vous voulez changer le texte dans la barre d'adresse sans y aller? – Adam

+0

S'il vous plaît d'abord rechercher le site Web: http://stackoverflow.com/search?q=javascript+change+url+ – BGerrissen

+2

Possible doublon de * nombreuses * questions. Par exemple: [Modifier l'URL avec jQuery sans recharger la page] (http://stackoverflow.com/questions/4013122/changing-the-url-with-jquery-without-reloading-the-page) – Robusto

Répondre

13

Dans les anciens navigateurs, vous pouvez et non changer l'URL dans la barre d'adresse sans quitter la page. Mais vous pouvez changer la partie de hachage de l'URL sans quitter la page. C'est-à-dire que vous pouvez changer www.example.com à www.example.com#new_text avec JavaScript window.location.hash = "new_text"; tout après le # peut être changé. Cependant, en HTML5, il existe une nouvelle API d'historique qui vous permet de modifier la partie de l'URL après le domaine. Vous ne pouvez donc pas modifier www.example.com à www.BankOfAmerica.com (pour des raisons de sécurité), mais vous pouvez remplacer www.example.com/foo par www.example.com/bar.

history.pushState("object or string representing the state of the page", "new title", "newURL"); 

Vérifiez When can I use... pour voir quels navigateurs soutenir la gestion de l'historique de la session HTML5 et soutenir la nouvelle méthode pushState.

De plus, il existe une bibliothèque JavaScript qui va normaliser l'API d'historique à travers les navigateurs et change l'URL dans les nouveaux navigateurs et utilise la partie de hachage pour les anciens navigateurs. Voir history.js.

+1

oui , vous pouvez. Je ne sais pas comment. Facebook le fait, mais bien sûr, ils sont super-programmeurs. Edit: viens de découvrir comment: http://stackoverflow.com/questions/6955430/change-url-on-ajax-request –

+0

@Eduard Luca Merci de m'avoir montré cela, j'ai mis à jour cette réponse en conséquence. – Adam

0

Vous pouvez changer quoi que ce soit après la marque de hachage (#) car cela est fréquemment utilisé dans les applications Ajax telles que la recherche Google et le nouveau Twitter. (C'est pourquoi tout apparaît après la marque de hachage dans ces applications.) Mais si vous changez quelque chose d'autre, la page devra être rechargée.

5

Je vais supposer que vous parlez de l'URL visible dans la barre d'URL.

La réponse est Non, il s'agit d'une faille de sécurité majeure lorsqu'une application tente de faire croire aux utilisateurs d'un autre site.

-1

Non, ce n'est pas possible. Et, quand cela est possible, c'est un bug de navigateur (je connais les bogues de sécurité antérieurs liés à ce comportement, et ils ont été corrigés dans le passé).

En fait ... Vous pouvez modifier la dernière partie de l'URL, n'importe quoi après le caractère #. Mais le nom d'hôte et le chemin ne peuvent pas être changés sans quitter la page.