Прокрутка с помощью jQuery без использования animate ()

Я создаю сайт для обмена сообщениями и хочу, чтобы чат автоматически прокручивался в конец ленты чата (последнее сообщение) при обновлении страницы. Я очень новичок в jQuery, и после небольшого поиска я заставил его работать с animate(). Это замечательно, когда страница сначала загружается слишком резко, например, при перезагрузке после отправки формы.

Есть ли способ автоматической прокрутки до дна контейнера без его анимации?

// When page loads
$(document).ready(function(){
    // Load chat. ALSO the chat has to be hard coded in here.
    $('#MessagesContainer').load('/php/chat_ref.php');

    // Scroll to the bottom of the page. ALSO ".height()+500" was a bit of a bodge.
    $("#MessagesContainer").animate({ scrollTop:$('#MessagesContainer').height()+500}, 100);
    return false;
});

// Every 2 seconds.
var auto_refresh = setInterval(function(){
    // Reload the chat.
    $('#MessagesContainer').load('/php/chat_ref.php'); 
    return false;
}, 2000);

person joshlikescheese    schedule 24.02.2019    source источник
comment
Да, просто установите scrollTop() вручную: $("#MessagesContainer").scrollTop($('#MessagesContainer').height()+500);. Однако вы должны отметить, что опрос AJAX - действительно плохая идея, поскольку он вообще плохо масштабируется. Чтобы создать систему чата, вы должны использовать веб-сокеты или события, отправленные сервером.   -  person Rory McCrossan    schedule 24.02.2019


Ответы (1)


Как насчет использования scrollTop вместо анимации?

$("#MessagesContainer").scrollTop($("#MessagesContainer").height());

person Niles Turner    schedule 24.02.2019
comment
Как насчет: $("#MessagesContainer").scrollTop($("#MessagesContainer")[0].scrollHeight); Не могли бы вы опубликовать фрагмент кода или что-то еще на jsfiddle.net и имитировать загрузку сообщения? Так будет легче помочь. - person Niles Turner; 24.02.2019