webentwicklung-frage-antwort-db.com.de

Einmalige Seitenaktualisierung nach dem Laden der ersten Seite

Ich möchte einen JavaScript-Code implementieren, der Folgendes festlegt: Wenn die Seite vollständig geladen ist, aktualisieren Sie die Seite sofort, aber nur einmal . Ich stecke beim "nur einmal" fest:

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

dies ergibt eine Schleife ohne "nur einmal". Wenn dies hilft, wird jQuery geladen.

73
Martin

Ich würde sagen, hash wie folgt:

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>

Aufgrund der if-Bedingung wird die Seite nur einmal neu geladen. Ich hatte auch dieses Problem und als ich danach suchte, fand ich diese Nizza-Lösung. Dies funktioniert für mich gut.

27

Wenn ich auf dieses Problem stoße, suche ich hier, aber die meisten Antworten versuchen, vorhandene URLs zu ändern. Hier ist eine weitere Antwort, die für mich mit localStorage funktioniert.

<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

Aktivieren Sie diesen Link. Er enthält einen Java-Skript-Code, mit dem Sie Ihre Seite nur einmal aktualisieren können

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

Es gibt mehr als eine Möglichkeit, Ihre Seite zu aktualisieren:

solution1 :

Um eine Seite bei jedem Öffnen einmal zu aktualisieren, verwenden Sie:

<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>

Dann ändern Sie Ihre zu sagen

<Body onLoad=" LoadOnce()" >

solution3:

response.setIntHeader("Refresh", 1);

Diese Lösung aktualisiert die Seite jedoch mehrmals. Dies hängt von der angegebenen Zeit ab

Ich hoffe das wird dir helfen

8
Areeg Samir

ich füge dies in meine Head-Tags der Seite ein, auf der ich einen einzelnen Reload haben möchte:

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

der Wert "mc" kann beliebig eingestellt werden, aber beide müssen in den beiden Zeilen übereinstimmen. und "= mobile" kann "= alles, was Sie wollen", es braucht nur einen Wert, um die Aktualisierung zu stoppen.

3
mike

Nach </body>-Tag:

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

Sie müssen entweder die Informationen GET oder POST verwenden. GET wäre am einfachsten. Ihr JS würde die URL überprüfen. Wenn ein bestimmter Parameter nicht gefunden wurde, würde er nicht nur die Seite aktualisieren, sondern den Benutzer an eine "andere" URL schicken, die dieselbe URL wäre, jedoch den GET-Parameter enthält .

Zum Beispiel:
http://example.com -> wird aktualisiert
http://example.com?refresh=no -> wird nicht aktualisiert

Wenn Sie die unordentliche URL nicht möchten, füge ich direkt am Anfang des Texts einige PHP ein, die einen verborgenen Wert enthalten, der im Wesentlichen angibt, ob der erforderliche Parameter POST für das Aktualisieren der Seite erforderlich ist war in der ersten Seitenanfrage enthalten. Gleich danach fügen Sie einige JS hinzu, um diesen Wert zu überprüfen und die Seite MIT diesen POST -Informationen gegebenenfalls zu aktualisieren.

0
maxedison

Bitte versuchen Sie es mit dem folgenden Code

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

verwenden Sie window.localStorage ... so

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

Es ist Arbeit für mich

Versuchen Sie es damit

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

Schließlich bekam ich nach zwei Monaten Recherche eine Lösung zum erneuten Laden der Seite. 

Es funktioniert gut für mein clientseitiges JS-Projekt.

Ich habe eine Funktion geschrieben, die die Seite nur einmal neu lädt.

1) Erste Browser-Domloading-Zeit

2) Aktuelle Zeitmarke abrufen

3) Browser-Ladezeit + 10 Sekunden

4) Wenn die Zeit der Browser-Dom-Ladezeit + 10 Sekunden größer ist als der aktuelle Zeitstempel, kann die Seite über "reloadPage ();"

Aber wenn es nicht länger als 10 Sekunden ist, bedeutet das, dass die Seite gerade neu geladen wird. Sie wird also nicht wiederholt geladen.

5) Wenn Sie also "reloadPage ();" Funktion irgendwo in Ihrer js-Dateiseite wird nur einmal neu geladen.

Hoffe das hilft jemandem

// 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

benutze das

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

Hier ist eine andere Lösung mit setTimeout, die nicht perfekt ist, aber funktioniert:

Es erfordert einen Parameter in der aktuellen URL, daher sieht die aktuelle URL einfach so aus:

www.google.com?time=1

Mit dem folgenden Code wird die Seite nur einmal neu geladen:

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

Die akzeptierte Antwort verwendet die geringste Menge an Code und ist leicht zu verstehen. Ich habe gerade eine andere Lösung für dieses Problem bereitgestellt.

Hoffe das hilft anderen.

0
MING WU