Zrobiłem coś takiego. Niestety wydaje mi się, że strasznie zamula przeglądarkę i powoduje, że cały czas kręci się ładowanie strony podczas działania skryptu.
Pomożecie mi to zoptymalizować i zrobić tak żeby to sobie śmigało w tle? Cel osiągnąłem bo nawet po przeładowaniu strony odliczanie trwa dalej - tylko, ze na IE i Edge nie smiga:(
function setCookie(t) {
document.cookie = "IntervalCookie="+t.toString();
startCounter();
}
function getCookie() {
var name = "IntervalCookie=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return parseInt(c.substring(name.length, c.length));
}
}
return -1;
}
function checkCookie() {
var user = getCookie();
if (user < 0) {
return false;
} else {
return true;
}
}
function DeleteCookie() {
document.cookie = "IntervalCookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
}
function startCounter() {
if(checkCookie()) {
var cookie = getCookie();
if (cookie > 0) {
document.write(cookie);
setTimeout (function() {setCookie(cookie-1); }, 1000);
}
else{
document.write('Koniec');
DeleteCookie();
}
}
else
{
setCookie(25);
}
}
startCounter();
https://jsfiddle.net/pknwcg2z/26/
Znalazłem jeszcze gotowca w jquery. Potestuje i możliwe, że będzie lepszy niż moje wypociny. On jest oparty o localStorage:
var updateTimer = function() {
timer = localStorage.getItem('timer') || 0;
if ( timer === 0 ) {
$("div#timer").html("Timer is unset");
} else {
timer--;
localStorage.setItem('timer', timer);
$("div#timer").html(timer);
}
};
$(function() {
setInterval(updateTimer, 1000);
$("#start").click( function() {
localStorage.setItem('timer', 500);
});
});
http://jsbin.com/oqamil/1/edit