1. Apache02.05.2025 at 8:58 AMот
Loading...
Loading...

"Умный" скролл - jQuery

Discussion in 'Web-программирование' started by golden103, 04.11.2015.

  1. golden103

    golden103

    Статус:
    Оффлайн
    Joined:
    11.02.13
    Messages:
    15
    Репутация:
    0 +/-
    Всем доброго времени суток!
    Уважаемые знатоки, нужна ваша помощь, делаю чат для сайта, все вроде работает, но вот со скроллом проблемы, функция вывода сообщений обновляется каждые 2сек, в функции имеется "прокрутка к последнему сообщению" и вот тут то и проблема, есть проверка, которая должна проверять положение скролла, если он в нижнем положении, то срабатывает scrollTop(...), а когда он выше нижнего положения( пользователь читает старые сообщения ) то эта прокрутка должна отключаться пока пользователь не вернет ползунок в нижнее положение, но скрипт почему то не работает как нужно, отправляя с одного браузера сообщение, в другом прокрутка к последнему сообщению не срабатывает.

    За ранее благодарю!

    Code:
    function load_msg( ) {
            jQuery.ajax({
                type: 'POST',
                url: 'chat/load_msg.php',
                data: 'reg=ok',
                success: function( html ) {
                    jQuery( '.view_msg' ).empty( ); //Очистка сообщений перед загрузкой
                    jQuery( '.view_msg' ).append( html ); //Загрузка сообщений из php
                    if( jQuery( '.view_msg' )[0].scrollTop == jQuery( '.view_msg' )[0].scrollHeight - jQuery( '.view_msg' )[0].clientHeight ) {
                        jQuery( '.view_msg' ).animate({
                            scrollTop: jQuery( '.view_msg' ).prop( 'scrollHeight' ) //Прокрутка к последнему сообщению
                        }, 1000 );
                    }
                    jQuery( '#text_a' ).val( 'scrollTop: ' +jQuery( '.view_msg' )[0].scrollTop+ ' scrollHeight: ' +jQuery( '.view_msg' )[0].scrollHeight+ ' - clientHeight: ' +jQuery( '.view_msg' )[0].clientHeight );
                }
            });
        }