Как сделать цикл на одноразовую загрузку preloader?

Giperion

В просторах интернета нашёл интересный индикатор-загрузки (loader). Всё отлично, работает. Но этот скрипт срабатывает каждый раз, когда я возвращаюсь на страницу(где и собсна находиться скрипт). Можно ли сделать так, чтоб индикатор загружался 1 раз за всё время ? (например пока вкладку не закроем)

// Hide loading overlay <div> (with spinner) after page complete loading. 
After hiding,
//   <div> will be removed, and for  removed css class 'noscroll'
var _loading_spinner=setInterval(function()
{if(document.readyState=='complete'){

 var $page_loading = document.getElementById('page_loading'),
  $body = document.body || document.getElementsByTagName('body')[0],
  speed = 2500, delay = 2500;

 if((typeof $page_loading != 'undefined') && ($page_loading != null)){
  setTimeout(function(){
  var transition = 'opacity ' + speed.toString() + 'ms ease',
      removeCssClass = function(obj, className){
        obj.className = obj.className.replace(className, '').replace('  ', ' 
   ');
    };
  ['-webkit-transition','-moz-transition','transition'].forEach(function(prefix){
    $page_loading.style[prefix] = transition;
  });

  $page_loading.style['opacity'] = '0';
  $page_loading.style['filter']  = 'alpha(opacity=0)';
  removeCssClass($body, 'noscroll');
  setTimeout(function(){
    $page_loading.parentNode.removeChild($page_loading);
  }, speed + 10);
}, delay);
}
clearInterval(_loading_spinner);
}},10);
</div></div>
1 ответ

Giperion

Перед запуском прелоадера можно проверять установлена ли определенная cookie, например, preloaderShown. Если установлена, то пропустить прелоадер, если не установлена - запустить прелоадер и установить cookie preloaderShown:

function getCookie(name) {
  var matches = new RegExp('(^| )' + name + '=([^;]+)').exec(document.cookie);
  return matches && 2 in matches ? matches[2] : null;
}

if (!getCookie('preloaderShown')) {
  runPreloader();
  document.cookie = 'preloaderShown=1';
}

licensed under cc by-sa 3.0 with attribution.