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.


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.


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

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


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.


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

   location.reload();
        });

To jest poprawna składnia.

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

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

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>

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

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.


0

Użyj tego zamiast tego

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

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

0

Wypróbuj ten kod:

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


0

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

location.reload();

0

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

this.location.reload();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.