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 .

0voto

maxedison Points 7652

Vous devez utiliser les informations GET ou POST. GET serait le plus simple. Votre JS vérifierait l'URL, si un certain paramètre n'est pas trouvé, il ne se contenterait pas de rafraîchir la page, mais enverrait plutôt l'utilisateur vers une url "différente", qui serait la même URL mais avec le paramètre GET.

Par exemple :
http://example.com --> va rafraîchir
http://example.com?refresh=no -->ne se rafraîchit pas

Si vous ne voulez pas d'URL désordonnée, j'inclurais du PHP au début du corps de la page qui renvoie une valeur cachée qui indique essentiellement si le paramètre POST nécessaire pour ne pas rafraîchir la page a été inclus dans la requête initiale. Juste après cela, vous incluriez du JS pour vérifier cette valeur et rafraîchir la page AVEC cette information POST si nécessaire.

0voto

user2053927 Points 1

Essayez avec ceci

var element = document.getElementById('position');        
element.scrollIntoView(true);`

0voto

Nithun Aravind Points 1

Veuillez essayer avec le code ci-dessous

var windowWidth = $(window).width();

$(window).resize(function() {
    if(windowWidth != $(window).width()){
    location.reload();

    return;
    }
});

0voto

bakchod_launda Points 21

Utiliser ce

<body onload =  "if (location.search.length < 1){window.location.reload()}">

0voto

MING WU Points 2121

Voici une autre solution avec setTimeout, pas parfaite, mais qui fonctionne :

Il nécessite un paramètre dans l'url courante, donc il suffit d'imaginer que l'url courante ressemble à ceci :

www.google.com?time=1

Le code suivant permet de recharger la page une seule fois :

 // Reload Page Function //
    // get the time parameter //
        let parameter = new URLSearchParams(window.location.search);
          let time = parameter.get("time");
          console.log(time)//1
          let timeId;
          if (time == 1) {
    // reload the page after 0 ms //
           timeId = setTimeout(() => {
            window.location.reload();//
           }, 0);
   // change the time parameter to 0 //
           let currentUrl = new URL(window.location.href);
           let param = new URLSearchParams(currentUrl.search);
           param.set("time", 0);
   // replace the time parameter in url to 0; now it is 0 not 1 //
           window.history.replaceState({}, "", `${currentUrl.pathname}?${param}`);
        // cancel the setTimeout function after 0 ms //
           let currentTime = Date.now();
           if (Date.now() - currentTime > 0) {
            clearTimeout(timeId);
           }
          }

La réponse acceptée utilise le moins de code possible et est facile à comprendre. Je viens de fournir une autre solution à ce problème.

J'espère que cela aidera d'autres personnes.

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