2014-01-09 7 views
0

У меня есть эта проблема, и я не знаю, есть ли способ, чтобы время обратного отсчета продолжалось, даже если страница обновляется, или если страница обновляется, появляется окно с предупреждением: «Вы уверены, что хотите покинуть страницу? " и если Ok будет перенаправлен на другую страницу?Продолжить время, когда обновляется страница - javascript

Вот мой Аякс скрипт обратного отсчета

<script type="text/javascript">       
window.onload = function() 
{ 
    countDown('timeLimit', 'sample.html', 60); 
} 

function countDown(elID, output, seconds) 
{ 
    var elem = document.getElementById(elID), 
     start = new Date().getTime(), end = start+seconds*1000, 
     timer = setInterval(function() { 

     var now = new Date().getTime(), timeleft = end-now, timeparts; 

     if(timeleft < 0) { 
      document.location.href = output; 
      clearInterval(timer); 
     } 
     else { 
      timeparts = [Math.floor(timeleft/60000),Math.floor(timeleft/1000)%60]; 
      if(timeparts[1] < 10) timeparts[1] = "0"+timeparts[1]; 
      elem.innerHTML = "Time left: "+timeparts[0]+":"+timeparts[1]; 

     } 
    } ,250); // the lower this number, the more accurate the timer. 250 recommended 
    } 
</script> 

Как продолжать это время даже страница является обновлением или перенаправление на другую страницу, когда страница обновления?

Пожалуйста help..im новый в JavaScript .. :(

+1

* «Как продолжить это время, даже страница обновляется или перенаправляется на другую страницу» * - Невозможно для счетчиков, которые запускаются в браузере. – Tomalak

+4

Вам нужно либо использовать файлы cookie, либо выполнить обратный отсчет серверной части. –

+0

+1 для файлов cookie, реализация обратного отсчета на стороне сервера выглядит хромой для меня, но это зависит от проблемы, также если обратный отсчет заканчивается на стороне сервера, есть много работы, чтобы сделать, чтобы обновить страницу клиента –

ответ

0

Короткий ответ ... нет. Вы можете послать серверу времени 2 перед обновлением, но это ненадежно (что делать и делать, если я чтрл + alt + del и kill browser process)?

0

Это то, что потребует использования куки-файлов или скриптов на стороне сервера. Вы можете использовать файл cookie для хранения значения счетчика, а также при загрузке/обновите его, проверьте, существует ли файл cookie.Если это произойдет, вы захотите загрузить это значение и вернуть счетчик из этого значения.

То же самое ядро ​​co ncept будет применяться с использованием сценария на стороне сервера. Сохраняете ли вы это значение в базе данных или используете сокет для поддержания значения в сценарии реального времени.

0

Если вам не нужно использовать хеш-страницу для какой-либо другой цели, и вы выполняете только навигацию на своем собственном сайте, вы можете поместить время таймера в window.location.hash, если вы просто перезагружаете страницу или в URL-адрес вы переходите на myurl.com/somepage.html#yourtime. имейте в виду, что если вы используете библиотеку, требующую этого значения, связываетесь за пределами сайта или просто используете привязки, это не сработает.

См. Change hash without reload in jQuery, как управлять этим значением.

Что нужно иметь в виду, так это то, что в Javascript нет «состояния», поэтому обновление любой страницы приведет к полной перезагрузке всех ваших скриптов. Это делает так, что вам нужно «хранить» ваши постоянные значения либо в cookie, либо в localstorage (html5, не последовательно реализованном в браузерах), либо на вашем сервере (вам понадобится способ идентификации вашего пользователя, например, логин или сеанс браузера для этого).

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

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