Eine Seite einmal mit jQuery aktualisieren (neu laden)?

82

Ich frage mich, wie ich eine Seite (oder sogar ein bestimmtes div) einmal (!) Mit jQuery aktualisieren / neu laden kann.

Idealerweise direkt nach DOM structureVerfügbarkeit (vgl. onloadEreignis) und ohne negative Auswirkungen back buttonoder bookmarkFunktionalität.

Bitte beachten Sie: Dies replace() ist aufgrund von Einschränkungen durch Dritte nicht zulässig.

Pete
quelle
Mir fehlt etwas in deiner Frage. Was meinst du mit "Aktualisieren" der Seite? Wenn die Seite geladen wurde, würde ein sofortiges Neuladen genau den gleichen Inhalt laden, oder? Was versuchst du zu erreichen?
Doug Neiner
Ich arbeite an einer Vorlage, die "normal" zuerst angezeigt wird, aber beim Aktualisieren / Neuladen in einen iFrame gezwungen wird. Jetzt möchte ich, dass die Seite auch beim ersten "Aufruf" in diesem iFrame angezeigt wird. TIA!
Pete
Ich denke, Sie sollten diesen Artikel lesen mycodingtricks.com/snippets/javascript/…
Shubham Kumar

Antworten:

81

Okay, ich glaube ich habe bekommen was du fragst. Versuche dies

if(window.top==window) {
    // You're not in a frame, so you reload the site.
    window.setTimeout('location.reload()', 3000); //Reloads after three seconds
}
else {
    //You're inside a frame, so you stop reloading.
}

Wenn es einmal ist, dann tun Sie es einfach

$('#div-id').triggerevent(function(){
    $('#div-id').html(newContent);
});

Wenn es regelmäßig ist

function updateDiv(){
    //Get new content through Ajax
    ...
    $('#div-id').html(newContent);
}

setInterval(updateDiv, 5000); // That's five seconds

Alle fünf Sekunden wird der Inhalt von div # div-id aktualisiert. Besser als die ganze Seite zu aktualisieren.

Ben
quelle
Danke, aber ich möchte, dass die Seite nur EINMAL aktualisiert / neu geladen wird (wenn möglich pro Browsersitzung) ...?
Pete
Was ist der Auslöser für das Nachladen? ein bestimmtes Ereignis oder nur eine Zeit?
Ben
Auslöser: der erste "Anruf" der Seite (sorry, mein Englisch ist ein bisschen schlecht g )
Pete
omfgroflmao, du bist ein Genie! Die "bearbeitete" Version ist genau das, wonach ich gesucht habe (übrigens den ganzen Tag ...). Ist es möglich, hier einen optionalen Zeitauslöser hinzuzufügen? Also wird diese location.reload - sagen wir mal - nach 3 Sekunden ausgeführt ...? TIA (DU hast wirklich meinen Tag gemacht!)
Pete
Ja, sicher, ändern Sie einfach location.reload () mit window.setTimeout ('location.reload ()', 3000);
Ben
66

Zum erneuten Laden können Sie Folgendes versuchen:

window.location.reload(true);
Milli
quelle
1
Kannst du das bool-Argument erklären?
Tomfumb
7
Das Argument für die Funktion location.reload bestimmt, ob der Browser das Dokument vom Webserver abrufen soll. Wenn Sie das Dokument erneut vom Webserver abrufen müssen
Secret Squirrel
40
window.location.href=window.location.href;
Maz
quelle
Schlechter Repräsentant, fragte jQuery HTML gegeben. -1
Stefano Groenland
Dies wird nicht funktionieren, wenn URL Hash hat wie: mycodingtricks.com/#cool
Shubham Kumar
5

Benutze das:

    <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 ifBedingung wird die Seite nur einmal neu geladen.

Parag Gaiwkad
quelle
4
$('#div-id').click(function(){

   location.reload();
        });

Dies ist die richtige Syntax.

$('#div-id').html(newContent); //This doesnt work
Swapnil
quelle
3

Sie haben keine jQuery-Aktualisierungsfunktion, da dies JavaScript-Grundlagen sind.

Versuche dies:

<body onload="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload');">
Adrian P.
quelle
Schön. Sie können es sogar in eine Funktion einfügen: <body onload = "javascript: init ()"> und die Funktion init () {if (location.href.indexOf ('reload') == - 1) location.replace (location. href + '& reload');}
Adrian P.
2

Verwenden:

<html>
    <head>
        <title>Reload (Refresh) Page Using Jquery</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $('#reload').click(function() {
                    window.location.reload();
                });
            });
        </script>
    </head>
    <body>
        <button id="reload" >Reload (Refresh) Page Using</button>
    </body>
</html>
Vicky
quelle
1

Fügen Sie dies oben in Ihre Datei ein und die Site wird alle 30 Sekunden aktualisiert.

<script type="text/javascript">
    window.onload = Refresh;

    function Refresh() {
        setTimeout("refreshPage();", 30000);
    }
    function refreshPage() {
        window.location = location.href;
    }
</script>

Eine andere ist: Fügen Sie das Head-Tag hinzu

<meta http-equiv="refresh" content="30">
Paresh3489227
quelle
1
 - location = location
 - location = location.href
 - location = window.location
 - location = self.location
 - location = window.location.href
 - location = self.location.href
 - location = location['href']
 - location = window['location']
 - location = window['location'].href
 - location = window['location']['href']

Dafür benötigen Sie jQuery nicht. Sie können es mit JavaScript tun.

Steve
quelle
0

Verwenden Sie dies stattdessen

function timedRefresh(timeoutPeriod) {
    setTimeout("location.reload(true);",timeoutPeriod);
}

<a href="javascript:timedRefresh(2000)">image</a>
arunav
quelle
0

Versuchen Sie diesen Code:

$('#iframe').attr('src', $('#iframe').attr('src'));
Koss
quelle
0

Versuche dies:

<input type="button" value="Reload" onClick="history.go(0)">
user1016195
quelle
0

Zum Aktualisieren der Seite mit Javascript können Sie einfach Folgendes verwenden:

location.reload();
Felipe Leão
quelle
0

Möglicherweise müssen Sie eine thisReferenz verwenden und dies location.reload() überprüfen, es wird funktionieren.

this.location.reload();
Tino Jose Thannippara
quelle