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 .

4voto

Enfin, j'ai trouvé une solution pour recharger la page une fois après deux mois de recherche.

Cela fonctionne bien sur mon projet JS côté client.

J'ai écrit une fonction qui sous recharge la page une seule fois.

1) Obtenir d'abord le temps de chargement du navigateur

2) Obtenir l'horodatage actuel

3) Temps de chargement du navigateur + 10 secondes

4) Si le temps de chargement du navigateur + 10 secondes est supérieur à l'horodatage actuel, la page peut être rafraîchie via "reloadPage() ;".

Mais s'il n'est pas supérieur à 10 secondes, cela signifie que la page vient d'être rechargée et qu'elle ne sera pas rechargée à plusieurs reprises.

5) Par conséquent, si vous appelez la fonction "reloadPage() ;" quelque part dans votre fichier js, la page ne sera rechargée qu'une seule fois.

J'espère que cela aidera quelqu'un

// Reload Page Function //
                function reloadPage() {
                    var currentDocumentTimestamp = new Date(performance.timing.domLoading).getTime();
                    // Current Time //
                    var now = Date.now();
                    // Total Process Lenght as Minutes //
                    var tenSec = 10 * 1000;
                    // End Time of Process //
                    var plusTenSec = currentDocumentTimestamp + tenSec;
                    if (now > plusTenSec) {
                        location.reload();
                    }
                }

                // You can call it in somewhere //
                reloadPage();

3voto

mike Points 25

Je mets ceci dans les balises head de la page sur laquelle je veux un rechargement unique :

<?php if(!isset($_GET['mc'])) {
echo '<meta http-equiv="refresh" content= "0;URL=?mc=mobile" />';
} ?>

la valeur "mc" peut être définie comme vous le souhaitez, mais les deux doivent correspondre dans les 2 lignes. et le "=mobile" peut être "=tout ce que vous voulez" il a juste besoin d'une valeur pour arrêter le rafraîchissement.

2voto

Utilisez window.localStorage... comme ceci :

var refresh = window.localStorage.getItem('refresh');
console.log(refresh);
if (refresh===null){
    window.location.reload();
    window.localStorage.setItem('refresh', "1");
}

Ça marche pour moi.

1voto

Vlad Webster Points 11

Après </body> étiquette :

<script type="text/javascript">
if (location.href.indexOf('reload')==-1)
{
   location.href=location.href+'?reload';
}
</script>

1voto

Meer Mustan Points 1

Vous pouvez en faire une vérifiable once = false puis rechargez votre page avec if else comme si once == false recharger la page et faire une fois vrai.

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