Тимур П.
4 сообщения
#16 лет назад
Пишу чат.
Новые сообщения грузятся через Ajax и попадают в DIV.
DIV имеет фиксированные ширину и высоту.
Свойство: overflow: scroll (когда сообщения выходят за границы DIV'а - появляется скроллбар).
Проблема в том, что, при добавлении нового сообщения, скроллбар автоматически перемещается самый верх (.scrollTop становится "0", т.е. скроллбар перемещается в начало DIV'а), а мне нужно, чтобы скроллбар или оставался прежним, или перемещался в конец DIV'а (к последнему сообщению).
Есть ли возможность средствами JavaScript поймать событие на обновление DIV'а?
Никита Липинский
403 сообщения
#16 лет назад
// выводит сообщение
function displayMessage(message)
{
// получить ссылку на слой с сообщениями
var oScroll = document.getElementById("scroll");
// проверить - необходимо ли будет прокручивать окно после добавления сообщения
var scrollDown = (oScroll.scrollHeight - oScroll.scrollTop <= oScroll.offsetHeight );
// отобразить сообщение
oScroll.innerHTML += message;
// прокрутить окно вниз, если необходимо
oScroll.scrollTop = scrollDown ? oScroll.scrollHeight : oScroll.scrollTop;
}


Код взят из Ajax и PHP: разработка динамических веб-приложений
Никита Липинский
403 сообщения
#16 лет назад
* Смайлик заменить на закрывающую скобку
(баг в отображении кода)
Тимур П.
4 сообщения
#16 лет назад
Большое спасибо! :-)