web-dev-qa-db-fra.com

Actualisation de page unique après le chargement de la première page

Je voudrais implémenter un code JavaScript qui dit ceci:

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

cela donne une boucle sans "une seule fois". jQuery est chargé si cela aide.

73
Martin

Je dirais utiliser hash, comme ceci:

window.onload = function() {
    if(!window.location.hash) {
        window.location = window.location + '#loaded';
        window.location.reload();
    }
}
82
Cokegod
<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 rechargera qu'une seule fois.J'ai aussi fait face à ce problème et lorsque j'ai cherché, j'ai trouvé cette belle solution .Cela fonctionne bien pour moi.

27

Lorsque je rencontre ce problème, je cherche ici mais la plupart des réponses tentent de modifier l’URL existante. 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>
25
Haimei

Cochez ce lien qui contient un code de script Java que vous pouvez utiliser pour actualiser votre page une seule fois

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

Il existe plusieurs façons d'actualiser votre page:

solution1 :

Pour actualiser une page une fois à chaque ouverture, 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>

Puis changez votre dire

<Body onLoad=" LoadOnce()" >

solution3:

response.setIntHeader("Refresh", 1);

Mais cette solution actualisera la page plusieurs fois selon le temps que vous spécifiez.

J'espère que cela vous aidera

8
Areeg Samir

je mets cela dans ma tête tags de la page je veux un seul recharger sur:

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

la valeur "mc" peut être définie sur ce que vous voulez, mais les deux doivent correspondre dans les 2 lignes. et le "= mobile" peut être "= tout ce que vous voulez", il lui faut simplement une valeur pour arrêter l'actualisation.

3
mike

Après la balise </body>:

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

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'était pas trouvé, il ne rafraîchirait pas simplement la page, mais enverrait plutôt l'utilisateur à une URL "différente", qui serait la même adresse mais avec le paramètre GET .

Par exemple:
http://example.com -> sera actualisé
http://example.com?refresh=no -> ne s'actualise pas

Si vous ne voulez pas que l'URL soit en désordre, alors j'inclurai un PHP au début du corps 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 demande de page initiale. Immédiatement après, vous devez inclure un JS pour vérifier cette valeur et actualiser la page AVEC ces informations POST si nécessaire.

0
maxedison

S'il vous plaît essayez avec le code ci-dessous

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

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

    return;
    }
});
0
Nithun Aravind
        var foo = true;
        if (foo){
            window.location.reload(true);
            foo = false;

        }
0
Ben Bieler

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");
}

C'est un travail pour moi

Essayez avec ça

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

Enfin, j'ai eu une solution pour recharger une 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 dessous la page de rechargement 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 est 10 fois plus long que l'horodatage actuel, la page peut être actualisée via "reloadPage ();"

Mais si elle ne dépasse pas 10 secondes, cela signifie que la page est simplement rechargée, elle ne sera donc pas rechargée à plusieurs reprises.

5) Par conséquent, si vous appelez "reloadPage ();" fonctionner dans quelque part dans votre page de fichier js ne sera rechargé une fois.

J'espère que ça aide 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();
0

utilisez ceci

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

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

Il nécessite un paramètre dans l'URL actuelle, il suffit donc de se représenter l'image suivante:

www.google.com?time=1

Le code suivant rend la page recharger 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 à cela.

J'espère que cela aide les autres.

0
MING WU