Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2018, 12:15
Новичок на форуме
Отправить личное сообщение для iAmAir Посмотреть профиль Найти все сообщения от iAmAir
 
Регистрация: 23.05.2018
Сообщений: 2

Прогресс-бар для загрузки страницы ajax'ом
Добрый день! Хочу сделать прогресс-бар при загрузке страницы ajax'ом.
Код такой:
$.ajax({
      url: href,
      type: "POST",
      dataType: 'html',
      xhr: function() {
        var xhr = new window.XMLHttpRequest(); // получаем объект XMLHttpRequest

        xhr.addEventListener('progress', function(evt){ // добавляем обработчик события progress (onprogress)
          var contentLength;
          if (evt.lengthComputable) {
            contentLength = evt.total;
          } else {
            contentLength = evt.target.getResponseHeader('x-decompressed-content-length');
          }

          var percentComplete = Math.ceil(evt.loaded / contentLength * 100);
          console.log('Проценты' + percentComplete);
          console.log('Загружено' + evt.loaded);
          console.log('Всего' + contentLength);
          console.log(evt.lengthComputable)
        }, false);
        return xhr;
      },
      beforeSend: function() {
          $('html, body').animate({scrollTop: 0}, 500, 'swing');
          $('.preloader').addClass('preloader-active');
      },


Но в результате lengthComputable всегда false, а contentLength всегда 0, как и evt.total

Как получить размер страницы и высчитать процент загрузки в данном случае?
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2018, 14:27
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от iAmAir
в результате lengthComputable всегда false, а contentLength всегда 0, как и evt.total
Страница формируется на сервере динамически?
Цитата:
При скачивании данных – обычно сервер в начале сообщает их общее количество в HTTP-заголовке Content-Length. Но он может и не делать этого, например если сам не знает, сколько данных будет или если генерирует их динамически. Тогда total будет равно 0. А чтобы отличить нулевой размер данных от неизвестного – как раз служит lengthComputable, которое в данном случае равно false.
Событие onprogress
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение скрипта после загрузки контента с другой страницы TibiTotoro Общие вопросы Javascript 2 26.04.2018 15:04
jQuery для загрузки страницы в <div> Dr.Holerik jQuery 12 11.10.2016 17:36
Preloader сайта по таймеру либо до полной загрузки страницы karakym Общие вопросы Javascript 1 31.05.2016 08:15
Перетаскивание картинок для загрузки Schokk Элементы интерфейса 5 04.09.2015 12:49
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30