2985 votes

Comment modifier l'URL sans recharger la page ?

Existe-t-il un moyen de modifier l'URL de la page actuelle sans recharger la page ?

Je voudrais accéder à la partie avant le # hash si possible.

Je dois seulement changer la portion après le domaine, donc ce n'est pas comme si je violais les politiques inter-domaines.

 window.location.href = "www.mysite.com/page2.php";  // Sadly this reloads

186 votes

Pour faciliter la compréhension de la question, voici ce que fait Facebook lorsque vous ouvrez une photo, par exemple. La barre d'adresse change pour pointer DIRECTEMENT vers cette photo, de sorte que vous pouvez partager l'URL sans perdre l'endroit où vous vous trouvez dans le site. Vous vous souvenez des sites basés sur le cadrage de la dernière décennie ? Vous ne pouviez obtenir que l'URL de la page d'accueil, car seuls les cadres internes changeaient. Et c'était terrible.

7 votes

Alors que history.pushState() est probablement la bonne réponse ici, dans cette situation (en fonction des circonstances exactes...), la possibilité d'utiliser une redirection côté serveur (comme via l'utilisation de la directive RewriteRule d'Apache) est quelque chose que vous pourriez envisager, ou du moins connaître. J'ai simplement pensé qu'il fallait le mentionner !

13 votes

window.history.replaceState(null, document.title, "/page2.php") est probablement ce que la plupart des gens recherchent.

-1voto

Omar bakhsh Points 517

C'est tout ce dont vous aurez besoin pour naviguer sans rechargement

// add setting without reload 
location.hash = "setting";

// if url change with hash do somthing
window.addEventListener('hashchange', () => {
    console.log('url hash changed!');
});

// if url change do somthing (dont detect changes with hash)
//window.addEventListener('locationchange', function(){
//    console.log('url changed!');
//})

// remove #setting without reload 

history.back();

0 votes

"Je voudrais accéder à la partie avant le site # hachage si possible."

-11voto

7890 Points 1

Vous pouvez utiliser AJAX. AJAX revient à recharger une partie seulement de la page. AJAX est utilisé via javascript. Vous pouvez simplement recharger l'url.

-12voto

Hexagon Theory Points 3713

En supposant que vous n'essayez pas de faire quelque chose de malveillant, tout ce que vous souhaitez faire à vos propres URLs peut être réalisé avec la magie de l'URL. htaccess .

-16voto

James Bond Points 156

Il suffit d'utiliser, il ne rechargera pas la page, mais seulement l'URL :

$('#form_name').attr('action', '/shop/index.htm').submit();

13 votes

Cela n'a aucun sens.

3 votes

Cela nécessite jQuery, même si jQuery n'a jamais été mentionné dans la question. Ceci appelle submit sur un <form> qui, par défaut, recharge la page dont on a spécifiquement demandé l'évitement. "il ne rechargera pas la page, mais juste l'URL" est garanti comme étant faux. Pourquoi cela a-t-il été posté comme une réponse à cette question ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X