Обновить (перезагрузить) страницу один раз с помощью jQuery?


83

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

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

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


Мне что-то не хватает в вашем вопросе. Что вы имеете в виду под «обновлением» страницы? Если страница загрузилась, при немедленной перезагрузке будет загружен точно такой же контент, верно? Что вы пытаетесь достичь?
Дуг Найнер 01

Я работаю над шаблоном, который сначала появляется "нормально", но при обновлении / перезагрузке принудительно помещается в iFrame. Теперь я хочу, чтобы страница также отображалась в этом iFrame при первом «вызове». TIA!
Пит

Думаю, вам стоит прочитать эту статью mycodingtricks.com/snippets/javascript/…
Кумар,

Ответы:


82

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

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 будет обновляться. Лучше, чем обновлять всю страницу.


Спасибо, но я хочу, чтобы страница обновлялась / перезагружалась только ОДИН РАЗ (за сеанс браузера, если возможно) ...?
Пит

Какой спусковой крючок для перезарядки? определенное событие или просто время?
Бен

триггер: первый "вызов" страницы (извините, мой английский немного плохой g )
Пит

омфгрофлмао, ты гений! "Отредактированная" версия - это именно то, что я искал (кстати, целый день ...). Можно ли добавить сюда дополнительный триггер времени? Так что location.reload выполняется - скажем - через 3 секунды ...? ТИА (ВЫ действительно сделали мой день!)
Пит

Да, конечно, просто измените location.reload () на window.setTimeout ('location.reload ()', 3000);
Бен

66

Для перезагрузки вы можете попробовать следующее:

window.location.reload(true);

1
вы можете объяснить аргумент bool?
tomfumb

7
Аргумент функции location.reload определяет, должен ли браузер получать документ с веб-сервера. Если необходимо снова вытащить документ с веб-сервера (например, если содержимое документа изменяется динамически), передайте аргумент как «истинный» grizzlyweb.com/webmaster/javascripts/refresh.asp
Secret Squirrel


5

Использовать этот:

    <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
$('#div-id').click(function(){

   location.reload();
        });

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

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

3

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

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

<body onload="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload');">

Хороший. вы даже можете поместить его в функцию: <body onload = "javascript: init ()"> и function init () {if (location.href.indexOf ('reload') == - 1) location.replace (location. href + '& reload');}
Адриан П.

2

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

<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 секунд.

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

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

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


0

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

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

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



0

Для обновления страницы с помощью javascript вы можете просто использовать:

location.reload();

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.