Обновите веб-страницу только один раз через 5 секунд - PullRequest
0 голосов
/ 21 ноября 2011

Я ищу решение JavaScript (или что-то еще), которое обновит веб-страницу ТОЛЬКО один раз, после 5 секунд ее открытия. Возможно ли это без зацикливания в цикле обновления?

Ответы [ 5 ]

3 голосов
/ 20 марта 2013

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

setTimeout(function ()
    {
        if (self.name != '_refreshed_'){
        self.name = '_refreshed_';
        self.location.reload(true);
    } else {
        self.name = ''; 
    }
    }, 5000);
2 голосов
/ 21 ноября 2011

Вы можете сделать это многими различными способами, но я думаю, что проще всего будет добавить строку запроса в URL после обновления, что позволит нам определить, произошло ли обновление уже:

//Function to get query string value. Source: http://www.bloggingdeveloper.com/post/JavaScript-QueryString-ParseGet-QueryString-with-Client-Side-JavaScript.aspx
function getQuerystring(key, default_){
  if (default_==null) default_=""; 
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return qs[1];
}

//check if our query string is already set:
if(getQuerystring(r) !== 1){
  setTimeout(function(){window.location.href = window.location.href + '?r=1'},5000)
}

Если существует вероятность того, что строка запроса уже присутствует, вам придется учесть это и изменить '?'на '&'.

0 голосов
/ 21 ноября 2011

Конечно, если вы не возражаете против использования jquery, вы можете сделать это с помощью вызова ajax после ожидания 5 секунд. Просто добавлю вам пример кода:

Как ждать 5 секунд с помощью jQuery?

$(document).ready(function() {

        // Get data
        $.ajax({
            url : '/tommyStockExchange/Data',
            dataType : 'html',
            data : {
                'format' : 'H',
                'type' : 'E'
            },
            success : function(data) {
                $("#executions").html(data);
            },
            statusCode : {
                404 : function() {
                    alert('executions url 404 :(');
                }
            }

        });

    });
0 голосов
/ 21 ноября 2011

Сделайте так, чтобы он перенаправлял на ту же страницу с другим #hash и в JS регистрировал перенаправление, только если хэш не установлен.

0 голосов
/ 21 ноября 2011

Вам просто нужно передать какие-то данные между загрузками страниц.Это можно сделать множеством способов - использовать куки, параметр запроса URL или что-то на стороне сервера.Пример параметра запроса:

if (!location.search.match(/(\?|&|^)stopRefreshing(=|&|$)/))
{
    setTimeout(function ()
    {
        var search = location.search;
        location.search = search ? search + '&stopRefreshing' : 'stopRefreshing';
    }, 5000);
}

Демонстрация: http://jsbin.com/ofawuz/edit

...