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.