Rechargement d'une url avec ancre modifiée

Résolu
Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   -  
Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   -
Salut tout le monde,

Il y a quelques temps j'ai passé des heures sur un problème finalement plus ou moins abandonné, et me voici reparti dans la même mouise qui m'a déjà coûté plusieurs soirées.

Concrètement : sur ma section discussion, je valide un message de la sorte
1- sur la page p, rédaction et envoi du message via AJAX
2- en cas de succès, la page p "s'efface" via JS pour laisser apparaitre une ligne de confirmation
3- elle réapparait après rechargement, pointant sur l'ancre relative au message qui vient d'être inséré

Tout ça fonctionne correctement sous Firefox. Le problème vient des autres navigateurs que j'ai testés : IE, Opera et Chrome. Avec eux, lors de la 3ème étape, impossible de faire recharger la page de manière à ce qu'elle pointe vers l'ancre (en gros, lors du rechargement ça ne descend pas au dernier message, ce qui est mon intention). Parfois ça ne descend pas à l'ancre, parfois ça descend puis ça remonte, les comportements ne sont pas les mêmes manifestement, en fonction du navigateur.

J'ai essayé beaucoup de choses, mais rien y fait :

window.location.href
window.location.reload
une astuce consistant à introduire une chaine aléatoire dans l'url
window.location.hash
window.location.replace
window.location.assign
et d'autres, oubliées...


Pour plus de clarté, j'ai fait un petit truc sur ma page test que vous trouverez ici : http://pronostics-formule1.fr/V5test.php

<div id="content" style="min-height:2000px;">
<p id="test" style="cursor:pointer;">CLIQUEZ ICI</p>
<p id="ancre" style="margin:500px 0;">ICI l'ancre</p>
</div>


$("#test").click(function() {
$('#content').empty().fadeIn().append('<p class="notification valide">redirection en cours</p>');
setTimeout(function(){
window.location.replace("http://pronostics-formule1.fr/V5test.php#ancre");
window.location.reload();
},1000);
});


J'espère que vous serez de bon conseil !

@+

Le jambon de Bayonne c'est bon ! Non, disons que personnellement je trouve ça bon.

1 réponse

Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   194
 
Ayé j'ai enfin mis la main sur quelque chose qui fonctionne correctement (et de la même manière) sur FF, Chrome, Opera et IE10+ (pas testé avec Safari).

Le principe est simplement de recharger la même url, en y ajoutant un argument aléatoire, dans mon cas un timestamp, pour leurrer le navigateur (lui faire croire que l'url a changé). Ce qui donne au final :

$("#test").click(function() {
$('#content').empty().fadeIn().append('<p class="notification valide">redirection en cours</p>');
setTimeout(function(){
var redirection = 'http://pronostics-formule1.fr/V5test.php?date='+(Date.now())+'#ancre;
window.location.href = redirection;
},1000);
});


En espérant que ça puisse aider !

Le jambon de Bayonne c'est bon ! Non, disons que personnellement je trouve ça bon.
0