Оновити (перезавантажити) сторінку один раз за допомогою jQuery?


82

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

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

Зверніть увагу: replace() не дозволяється через сторонні обмеження.


Я щось пропускаю у вашому запитанні. Що ви маєте на увазі під "оновленням" сторінки. Якщо сторінка завантажилася, перезавантаження негайно призведе до завантаження точно того самого вмісту, правда? Що ви намагаєтесь досягти?
Дуг Нейнер

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

Думаю, вам слід прочитати цю статтю mycodingtricks.com/snippets/javascript/…
Кумар

Відповіді:


81

Гаразд, я думаю, що я отримав те, про що ти просиш. Спробуйте це

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 оновлюватиметься. Краще, ніж освіжати всю сторінку.


Дякую, але я хочу, щоб сторінка оновлювалась / перезавантажувалась ТІЛЬКИ (за сеанс браузера, якщо це можливо) ...?
Піт,

Що є тригером для перезавантаження? певна подія чи просто час?
Бен

Тригер: перший «виклик» сторінки (вибачте, мій англійська цікаве бідних г )
Піт

omfgroflmao, ти геній! "Відредагована" версія - це саме те, що я шукав (цілий день до речі ...). Чи можна додати сюди необов'язковий тригер часу? Отже, location.reload виконується - скажімо, через 3 секунди ...? ТІА (ВИ справді зробили мій день!)
Піт,

Так, звичайно, просто змініть location.reload () за допомогою window.setTimeout ('location.reload ()', 3000);
Бен

66

Щоб перезавантажити, ви можете спробувати це:

window.location.reload(true);

1
ти можеш пояснити аргумент bool?
tomfumb

7
Аргумент функції location.reload визначає, чи повинен браузер отримувати документ з веб-сервера. Якщо потрібно повторно витягнути документ з веб-сервера (наприклад, коли вміст документа динамічно змінюється), передайте аргумент як "true" 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 ()"> і функції 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>

Ще один: додайте в тег head

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