Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   localStorage - скрипт не работает при отключеных куки (https://javascript.ru/forum/misc/68546-localstorage-skript-ne-rabotaet-pri-otklyuchenykh-kuki.html)

losapwild 23.04.2017 08:15

localStorage - скрипт не работает при отключеных куки
 
Здравствуйте. Есть скрипт http://jsfiddle.net/SCyWG/71/

$(function(){
			var num = 19,
					output = $('#mydiv'),
					LS_allowed=('localStorage' in window),
					restart=1/60/60*10;//Convert 1 hour to 10 seconds
			
			if(LS_allowed){
				var save_time=parseInt(localStorage.getItem('timer-time'))||0;
				if(save_time+restart*60*60*1000>=(new Date()).getTime())
					num=localStorage.getItem('timer-num')||num;
			};
			
			output.text(num);
			(function changeNum(){
				setTimeout(function(){
						if(num<=0) 
							return;
						
						output.text(--num);
						if(LS_allowed){
							localStorage.setItem('timer-num',num);
							localStorage.setItem('timer-time',(new Date()).getTime());
						};
						changeNum();
				},1000+(19-num)*100);
			})();
});


Это счетчик, который сохраняется в localStorage и при обновлении не сбрасывается.


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

Спасибо


Если что, раньше было так

var timer,
    num = 19,
    output = $('#mydiv');

function changeNum(){
    output.text(num--);
    //каждый раз задержка будет на 100ms больше
    if(num >= 0) setTimeout(changeNum,500+(19-num)*100);
}
setTimeout(changeNum,500);


Но так счетчик работал, но не сохранялся

рони 23.04.2017 10:31

losapwild,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
var num = 19,
    output = $('#mydiv'),
    LS_allowed=!!(window.localStorage);
    if (LS_allowed && localStorage.getItem('num')) num = +localStorage.getItem('num');
function changeNum(){
    output.text(num--);
    if (LS_allowed) localStorage.setItem('num',num);
    //каждый раз задержка будет на 100ms больше
    if(num >= 0) setTimeout(changeNum,500+(19-num)*100);
}
setTimeout(changeNum,500);

});
  </script>
</head>

<body>
<div id="mydiv"></div>

</body>
</html>


Часовой пояс GMT +3, время: 22:47.