Rechargement d'une url avec ancre modifiée

Résolu/Fermé
Bertrand40 Messages postés 1196 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 - Modifié par Bertrand40 le 28/02/2014 à 06:43
Bertrand40 Messages postés 1196 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 - 12 mars 2014 à 08:54
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 vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 194
Modifié par Bertrand40 le 12/03/2014 à 08:57
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