nik_neman
@nik_neman
php-junior

Смена Url при скроллинге?

Здравствуйте.
На сайте реализован вывод новостей. Выводится выбранная новость, а затем идут следующие новости из этой категории которые появляются при прокрутке вниз.
Делал через Ajax так:
jQuery(function($){
    $(window).scroll(function(){
        var bottomOffset = 1700;
        var data = {
            'query': query,
            'action': 'singlescroll',
        };
        if( $(document).scrollTop() > ($(document).height() - bottomOffset) && !$('body').hasClass('loading')){
            $.ajax({
                url:'/wp-admin/admin-ajax.php',
                data:data,
                type:'POST',
                beforeSend: function( xhr){
                    $('body').addClass('loading');
                },
                success:function(data){
                    if( data ) {
                        $('#single_load').before(data);
                        $('body').removeClass('loading');
                        current_page++;
                    }
                }
            });
        }
    });
});

В functions.php в функции получаю данные и вывожу. Меняю url таким образом в обработчике:
var news_url = '<?php echo wp_make_link_relative( get_permalink()); ?>';
                var news_title = '<?php the_title(); ?>';
                window.history.replaceState('', news_title, news_url);

Все срабатывает, но вот только при прокрутке вниз. При обратной прокрутке вверх url не изменяется.
Можно ли в моём текущем решении сделать смену url при прокрутке вверх?
Заранее спасибо.
  • Вопрос задан
  • 2287 просмотров
Пригласить эксперта
Ответы на вопрос 2
trushka
@trushka
Можно запоминать scrolltop'ы при каждой подгрузке новой новости, и если текущий scrollTop меньше - вызывать history.back(). Может. даже для каждой статьи отдельный обработчик с проверкой делать, а после выполнения - удалять. Это на случай, если сконца вверх кнопкой home перейти, например. С другой стороны, при прокрутке вниз опять хорошо бы обратно менять в зависимости от.. Ну, можно адреса и позиции в массив записывать и кпри прокрутке проверять, если адрес не соответствует указанному диапазону - менять на соответствующий
Ответ написан
Комментировать
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Здравствуйте.

Думаю, Вам должна подойти библиотека Waypoints. С помощью неё можно вызывать функции при скроллинге элементов. На сайте есть примеры с демонстрацией (нужно прокрутить страницу).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы