Скрипт, аналогов которого уже достаточно, но ни один из которых не давал пользователю право выбирать, хочет он подгружать следующую страницу материала или нет. Также скрипт полностью на jQuery, что также делает его уникальным.

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

Скрипт будет работать лишь для главной страницы Каталога файлов

Установка:
Каталог файлов -- Главная страница каталога файлов -- Найдите $BODY$ и сразу после этого вставляйте:
Код
  
  <?if($PAGE_ID$ = 'main')?>  
  <div class="apopagesel" style="display: none">  
  $NUM_PAGES$
  </div>  
  <script>  
const apoloadme = '<fieldset><legend>Подгрузить ещё?</legend><input type="button" value="Непременно!" /><br><input type="button" value="Не спрашивай, достал!" /></fieldset>';
const pageSelector = '.apopagesel';
const contentSelector = '.Mybody';
let currentPage = 1;
let isLoading = false;
let isAutoLoadDisabled = false;
let isPromptShown = false; // Флаг для показа окна только после подгрузки
function getMaxPages() {
  return parseInt($(pageSelector).text()) || 1;
}
function loadNextPage() {
  isLoading = true;
  $.get(`/?page${currentPage + 1}`, (response) => {
  try {
  const $newContent = $(contentSelector, response).html();
  if ($newContent) {
  $(contentSelector).append($newContent);
  currentPage++;
  _uWnd.alert(currentPage >= getMaxPages() ? 'Подгружена последняя страница' : `Подгружена страница ${currentPage}`, '', { w: 250, h: 70 });
  isPromptShown = false; // Сбрасываем флаг после подгрузки, чтобы показать окно для следующей страницы
  } else {
  console.warn('Контент не найден в ответе сервера');
  }
  } catch (error) {
  console.error('Ошибка обработки ответа:', error);
  _uWnd.alert('Ошибка при подгрузке страницы', '', { w: 250, h: 70 });
  } finally {
  isLoading = false;
  }
  }).fail((error) => {
  console.error('Ошибка запроса:', error);
  _uWnd.alert('Не удалось загрузить страницу', '', { w: 250, h: 70 });
  isLoading = false;
  });
}

$(window).on('scroll', () => {
  if (isLoading || isAutoLoadDisabled || currentPage >= getMaxPages() || isPromptShown) return;

  const $pageSel = $(pageSelector);
  if (!$pageSel.length) return;

  const scrollPosition = window.scrollY + window.innerHeight;
  const triggerPosition = $pageSel.offset().top;

  if (scrollPosition >= triggerPosition - 600) {
  isLoading = true;
  isPromptShown = true; // Устанавливаем флаг, чтобы окно не показывалось повторно до подгрузки
  _uWnd.alert(apoloadme, 'Эм, а можно вопрос?', { w: 250, h: 120, tm: 7000 });

  setTimeout(() => {
  $('input[value="Непременно!"]').on('click', function () {
  $(this).remove();
  loadNextPage();
  });

  $('input[value="Не спрашивай, достал!"]').on('click', function () {
  _uWnd.alert('Ок, понял!', 'Всё, убедил', { w: 250, h: 120 });
  isAutoLoadDisabled = true;
  isLoading = false;
  isPromptShown = false; // Сбрасываем, если пользователь отказался
  });
  }, 1000);

  setTimeout(() => {
  isLoading = false;
  }, 17000);
  }
});
</script>  
<?endif?>

Замените $BODY$ на:
Код
<div class="Mybody">$BODY$</div>

Комментарии

Минимальная длина комментария - 50 знаков. комментарии модерируются
HTMLSTART » Скрипты UCOZ » Каталога файлов » Подгрузка материалов на главной Каталога файлов по мере прокрутки. скрипт ucoz