2016-02-15 8 views
0

Как изменить время обновления страницы после перезагрузки первой страницы (это 30 секунд), а затем перезагрузить страницу каждые 5 минут, если пользователь все еще находится на странице. В настоящий момент он перезагружается навсегда каждые 30 секунд.изменить интервал перезагрузки страницы после первой перезагрузки страницы

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

window.onload = timedRefresh(30000); 

Как это сделать? Спасибо

+1

возможно дубликат? http://stackoverflow.com/questions/1293160/how-do-i-refresh-the-browser-every-x-seconds-with-javascript – Microsmsm

+0

Вы можете установить значение localStorage, чтобы узнать, установлены ли они для начального таймера, то если это так, измените его на 5 минут. Хотя в контекстуальном масштабе это кажется довольно раздражающим для веб-сайта. Почему бы не обновить то, что вам нужно с ajax? –

+1

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

ответ

0

Вы можете установить параметр в своем URL-адресе, который сообщает вам, является ли это перезагрузкой первой страницы или что-то вроде http://www.yoururl.com?fr=1, где fr означает «первая перезагрузка».

После этого вам просто нужно получить этот параметр querystring наилучшим образом, который вам подходит, либо с помощью JavaScript, либо с его значением на стороне сервера, а затем отправив его клиенту.

Наконец, вам просто нужно проверить состояние, чтобы решить, следует ли перезагружать через 30 секунд 5 минут.

Например, предположим, что у вас есть значение fr в переменной с именем firstReload:

window.onload = timedRefresh(firstReload == "1" ? 30000 : 300000); 
0

Вы можете сохранить в LocalStorage количестве перезагрузок

+1

. Более полный пример был бы хорошим идея. В противном случае +1 – Oleander

0

Вы можете использовать localStorage, чтобы сохранить флаг, страница была загружена первый раз

var timeout = localStorage.getItem('pageloaded') ? 3e5 : 3e4; 
function timedRefresh(timeoutPeriod) { 
    localStorage.setItem('pageloaded', true); 
    setTimeout("location.reload(true);",timeoutPeriod); 
} 

window.onload = timedRefresh(timeout); 
+0

, к сожалению, он продолжает обновляться – merxie

+0

Где я могу установить время обновления здесь? – merxie

+0

3e5 и 3e4 - время обновления. 3e5 = 300000; 3e4 = 30000; –

0

Использование localStorage возможно.

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

var rate; 
if (localStorage.getItem("time")) rate = 300000; 
else { 
    localStorage.setItem("time", true); 
    rate = 30000; 
} 

window.onload = timedRefresh(rate); 

Это установит таймер на основе, если пользователь установил ключ localStorage.

+0

это не работает. он постоянно освежает! – merxie

+0

setTimeout (и setInterval) никогда не должен брать строку в качестве первого аргумента в качестве подразумеваемого eval(), который вводит новое содержимое в текущую область. –

+0

Я согласен с тем, что анонимная функция будет лучше –

Смежные вопросы