Обновить (перезагрузить) страницу один раз, используя jQuery? - PullRequest
80 голосов
/ 01 апреля 2010

Мне интересно, как обновлять / перезагружать страницу (или даже определенный div) один раз (!), Используя jQuery?

В идеале, сразу после доступности DOM structure (см. Событие onload) и не оказывает негативного влияния на функциональность back button или bookmark

Обратите внимание: replace() не допускается из-за ограничений третьих лиц.

Ответы [ 14 ]

79 голосов
/ 01 апреля 2010

Хорошо, я думаю, что получил то, что вы просите. Попробуйте это

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

Если это один раз, тогда просто сделайте

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

Если это периодически

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

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

Итак, каждые пять секунд содержимое div # div-id будет обновляться. Лучше, чем обновить всю страницу.

66 голосов
/ 03 июня 2011

Чтобы перезагрузить, вы можете попробовать это:

window.location.reload(true);
40 голосов
/ 01 апреля 2010
window.location.href=window.location.href;
4 голосов
/ 19 февраля 2013

Используйте это:

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

Из-за условия if страница перезагрузится только один раз.

4 голосов
/ 17 февраля 2012
$('#div-id').click(function(){

   location.reload();
        });

Это правильный синтаксис.

$('#div-id').html(newContent); //This doesnt work
3 голосов
/ 22 января 2012

У вас нет функции обновления jQuery, потому что это основы JavaScript.

Попробуйте это:

<body onload="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload');">
2 голосов
/ 20 мая 2013

Использование:

<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 голос
/ 30 сентября 2015
 - 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']

Вам не нужен jQuery для этого. Вы можете сделать это с помощью JavaScript.

1 голос
/ 13 мая 2014

Добавьте это в начало файла, и сайт будет обновляться каждые 30 секунд.

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

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

Еще один: добавить в заголовок тега

<meta http-equiv="refresh" content="30">
0 голосов
/ 15 мая 2017

Вам может понадобиться использовать this ссылку вместе с location.reload() проверьте это, это будет работать.

this.location.reload();
...