Odśwież (przeładuj) stronę raz za pomocą jQuery?

83

Zastanawiam się, jak odświeżyć / przeładować stronę (lub nawet konkretny div) raz (!) Za pomocą jQuery?

Idealnie w sposób tuż po DOM structurejest dostępny (por onloadevent) i nie wpływa negatywnie back buttonlub bookmarkfunkcjonalność.

Uwaga: replace() nie jest dozwolone ze względu na ograniczenia stron trzecich.

Pete
źródło
Brakuje mi czegoś w Twoim pytaniu. Co rozumiesz przez „odświeżenie” strony. Jeśli strona została załadowana, natychmiastowe ponowne załadowanie spowodowałoby załadowanie dokładnie tej samej treści, prawda? Co próbujesz osiągnąć?
Doug Neiner
Pracuję nad szablonem, który pojawia się „normalnie” jako pierwszy, ale jest wymuszany w iFrame po odświeżeniu / ponownym załadowaniu. Teraz chcę, aby strona była wyświetlana w tym elemencie iFrame również przy pierwszym „wywołaniu”. TIA!
Pete
Myślę, że powinieneś przeczytać ten artykuł mycodingtricks.com/snippets/javascript/…
Shubham Kumar

Odpowiedzi:

82

W porządku, myślę, że mam to, o co prosisz. Spróbuj tego

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

Jeśli tak jest, po prostu zrób

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

Jeśli jest okresowo

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

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

Tak więc co pięć sekund zawartość div # div-id będzie odświeżana. Lepsze niż odświeżanie całej strony.

Ben
źródło
Dzięki, ale chcę, aby strona była odświeżana / przeładowywana tylko RAZ (na sesję przeglądarki, jeśli to możliwe) ...?
Pete
Jaka jest przyczyna przeładowania? pewne wydarzenie czy po prostu czas?
Ben
wyzwalacz: pierwsze „wezwanie” strony (przepraszam, mój angielski jest trochę kiepski g )
Pete
omfgroflmao, jesteś geniuszem! Wersja „edytowana” jest dokładnie tym, czego szukałem (przy okazji cały dzień ...). Czy można tutaj dodać opcjonalny wyzwalacz czasowy? Więc to location.reload jest wykonywane - powiedzmy - po 3 sekundach ...? TIA (naprawdę zrobiłeś mój dzień!)
Pete
Jasne, po prostu zmień location.reload () za pomocą window.setTimeout ('location.reload ()', 3000);
Ben
66

Aby przeładować, możesz spróbować tego:

window.location.reload(true);
Mili
źródło
1
czy możesz wyjaśnić argument bool?
tomfumb
7
Argument funkcji location.reload określa, czy przeglądarka powinna pobrać dokument z serwera WWW. Jeśli zajdzie potrzeba ponownego pobrania
Secret Squirrel
40
window.location.href=window.location.href;
Maz
źródło
zły przedstawiciel, jQuery poprosił o podanie HTML. -1
Stefano Groenland
To nie zadziała, jeśli adres URL ma hash, taki jak: mycodingtricks.com/#cool
Shubham Kumar
5

Użyj tego:

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

Ze względu na ifstan strona załaduje się ponownie tylko raz.

Parag Gaiwkad
źródło
4
$('#div-id').click(function(){

   location.reload();
        });

To jest poprawna składnia.

$('#div-id').html(newContent); //This doesnt work
swapnil
źródło
3

Nie masz funkcji odświeżania jQuery, ponieważ to są podstawy JavaScript.

Spróbuj tego:

<body onload="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload');">
Adrian P.
źródło
Niezłe. możesz nawet umieścić go wewnątrz funkcji: <body onload = "javascript: init ()"> i function init () {if (location.href.indexOf ('reload') == - 1) location.replace (location. href + '& reload');}
Adrian P.
2

Posługiwać się:

<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
źródło
1

Dodaj to na początku pliku, a witryna będzie odświeżać się co 30 sekund.

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

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

Inna to: Dodaj tag w głowie

<meta http-equiv="refresh" content="30">
Paresh3489227
źródło
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']

Nie potrzebujesz do tego jQuery. Możesz to zrobić za pomocą JavaScript.

Steve
źródło
0

Użyj tego zamiast tego

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

<a href="javascript:timedRefresh(2000)">image</a>
arunav
źródło
0

Wypróbuj ten kod:

$('#iframe').attr('src', $('#iframe').attr('src'));
Koss
źródło
0

Spróbuj tego:

<input type="button" value="Reload" onClick="history.go(0)">
user1016195
źródło
0

Aby odświeżyć stronę za pomocą javascript, możesz po prostu użyć:

location.reload();
Felipe Leão
źródło
0

Być może będziesz musiał użyć thisodniesienia wraz z location.reload() zaznaczeniem, to zadziała.

this.location.reload();
Tino Jose Thannippara
źródło