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.


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.


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

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


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.


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

   location.reload();
        });

Dies ist die richtige Syntax.

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

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

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>

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

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.


0

Verwenden Sie dies stattdessen

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

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

0

Versuchen Sie diesen Code:

$('#iframe').attr('src', $('#iframe').attr('src'));

0

Versuche dies:

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

0

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

location.reload();

0

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

this.location.reload();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.