2012-01-05 4 views
2

У меня есть приложение чата, которое автоматически прокручивается в нижней части div при получении нового сообщения. Это отлично работает, если вы не прокручиваете его, чтобы читать журнал, как при получении нового сообщения он возвращается назад. Мне нужно его прокручивать, только если положение прокрутки уже находится внизу и не уверен, как это сделать.JQuery div autoscroll только когда внизу div

var scroll = $("div#log").prop("scrollHeight") - $('div#log').height() 
$("div#log").scrollTop(scroll) 

Любая помощь/предложение будет приветствовать и высоко оценил :)

+0

Пожалуйста, укажите свой HTML или jsfiddle – Dom

ответ

0

Вы можете сделать это с $ (документ) .scrollTop() и window.innerHeight.

function appendMessage(message) { 
    if($(document).scrollTop() + window.innerHeight == $('body').height()) 
     /* append message and scroll */ 
    else 
     /* append message without scroll */ 
}); 

видеть мою скрипку: http://jsfiddle.net/sxR9j/

+0

это не прокрутка окна, но полоса прокрутки переполнения div: auto –

+0

@PastorBones в этом случае вы можете использовать свой scrollHeight и scrollTop. см. http://jsfiddle.net/vZetU/ – Sang

+0

Я не могу заставить это работать http://jsfiddle.net/NgdNz/1/ –

0

Вы должны иметь обработчик на событие прокрутки, чтобы проверить, действительно ли вы в нижней части свитка.

$("#mydiv").on('scroll', function() { 
    ... 
} 

Вы можете проверить, является ли вы или нет в нижней части свитки путем вычитания свойства scrollTop и clientHeight от собственности scrollHeight, см моей скрипки: http://jsfiddle.net/XS3kf/1/