95 votes

Rafraîchissement unique de la page après le premier chargement

Je voudrais implémenter un code JavaScript qui stipule ceci : si la page est complètement chargée, rafraîchir la page immédiatement, mais seulement une fois. Je suis bloqué sur le "une seule fois" :

window.onload = function () {window.location.reload()}

Cela donne une boucle sans le "une seule fois". jQuery est chargé si cela peut aider.

1 votes

Qu'accomplissez-vous en rechargeant la page ? Il y a peut-être une meilleure façon de résoudre le problème.

0 votes

Il y a une galerie jquery fullscreen script qui démarre sur la page, mais les vignettes ne sont jamais chargées complètement. si vous appuyez sur le bouton "refresh" pour la page, elle charge juste les vignettes restantes... donc il est clair que je cherche une sorte de solution de contournement... donner les vignettes séparément est trop compliqué (CMS), les autres corrections de bugs n'ont pas vraiment aidé... Il y a 4 MB d'images, environ 300kb chacune, à un moment donné les pouces des images ne sont plus redimensionnés et affichés (timeout ? trop, trop gros ??) mais la page finit de se charger.

0 votes

J'ai rencontré un problème similaire (les javascripts ne fonctionnent pas) lors de l'utilisation de pjax. pjax.heroku.com .

112voto

Cokegod Points 2274

Je dirais qu'il faut utiliser du hash, comme ça :

window.onload = function() {
    if(!window.location.hash) {
        window.location = window.location + '#loaded';
        window.location.reload();
    }
}

0 votes

Oui. J'allais justement le suggérer.

0 votes

Oui, similaire à ma suggestion d'utiliser un paramètre $_GET, mais un peu plus facile puisque l'accès au hash en JS est plus facile que l'accès au paramètre $_GET....

4 votes

C'est le plus simple tant qu'il n'y a pas déjà des hachages dans les URLs. Dans ce cas, la lecture d'un paramètre GET serait préférable.

68voto

Haimei Points 328

Lorsque je rencontre ce problème, je cherche ici mais la plupart des réponses essaient de modifier l'url existant. Voici une autre réponse qui fonctionne pour moi en utilisant localStorage.

<script type='text/javascript'>

(function()
{
  if( window.localStorage )
  {
    if( !localStorage.getItem('firstLoad') )
    {
      localStorage['firstLoad'] = true;
      window.location.reload();
    }  
    else
      localStorage.removeItem('firstLoad');
  }
})();

</script>

0 votes

Une solution créative.

0 votes

@Haimei Thx a lot __/\_.

0 votes

Pour ceux qui se posent la question, cela recharge la page une fois sans ajouter ni modifier l'URL d'origine.

30voto

<script type="text/javascript">
$(document).ready(function(){    
    //Check if the current URL contains '#'
    if(document.URL.indexOf("#")==-1){
        // Set the URL to whatever it was plus "#".
        url = document.URL+"#";
        location = "#";

        //Reload the page
        location.reload(true);
    }
});
</script>

En raison de la condition if, la page ne sera rechargée qu'une seule fois. J'ai également été confronté à ce problème et lorsque j'ai cherché, j'ai trouvé cette solution intéressante. Cela fonctionne bien pour moi.

12voto

Areeg Samir Points 101

Vérifiez ce lien qui contient un code java-script que vous pouvez utiliser pour rafraîchir votre page une seule fois.

http://www.hotscripts.com/forums/javascript/4460-how-do-i-have-page-automatically-refesh-only-once.html

Il y a plus d'une façon de rafraîchir votre page :

solution1 :

Pour rafraîchir une page une fois à chaque fois qu'elle s'ouvre, utilisez :

<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</head>

sollution2 :

<script language=" JavaScript" >
<!-- 
function LoadOnce() 
{ 
window.location.reload(); 
} 
//-->
</script>

Ensuite, changez votre pour dire

<Body onLoad=" LoadOnce()" >

solution3 :

response.setIntHeader("Refresh", 1);

Mais cette solution rafraîchira la page plus d'une fois, selon l'heure que vous avez spécifiée.

J'espère que cela vous aidera

6voto

Godwin Tommy Points 61
<script>

function reloadIt() {
    if (window.location.href.substr(-2) !== "?r") {
        window.location = window.location.href + "?r";
    }
}

setTimeout('reloadIt()', 1000)();

</script>

cela fonctionne parfaitement

0 votes

Remarque : 1000 signifie 1 seconde. Vous pouvez le régler sur les intervalles de temps que vous souhaitez.

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