Скроллинг чата
Есть чат , сделал автоскролинг в низ. Но теперь если пытаюсь прокрутить сообщения в верх скроллинг уходит всеравно в низ, как с этим можно боротся?
<script type="text/javascript">
window.onload = function(){
var scrollinDiv = document.getElementById('responce');
setInterval(function() {
scrollinDiv.scrollTop = 9999;
}, 3000);
}
</script>
<div id="responce"></div>
|
Напиши человеческим языком, что делает эта функция и найдешь причину.
|
в чате есть сообщения, эта функция всевремя прокручивает окно чат в низ. Сообщения даже новые могут не приходить а окно чата постоянно внизу, если я вверх пытаюсь пролиснуть чат, оно меня обратно вниз скидывает
|
http://javascript.ru/setInterval
Первое же предложение в описании |
если вручную прокручиваешь до конца, то при добавлении сообщения будет идти автоскролл. если нет то нет)
<!DOCTYPE HTML>
<html>
<head>
<title>example</title>
<style>
.msg {
padding: 5px;
margin: 5px;
border: 1px solid silver;
}
</style>
</head>
<body>
<div style="width: 200px; height: 300px; border: 1px solid black; overflow-y: scroll;" onscroll="scroll(this);">
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
<div class="msg">aguadg uydg uerygtuy eguygauyer gauery guae aueaer</div>
</div>
<script>
var auto = false
function scroll (ths) {
auto = ths.scrollTop + ths.clientHeight == ths.scrollHeight;
}
var div = document.querySelector('div'), i = 0;
setInterval(function () {
var newMsg = document.createElement('div');
newMsg.innerHTML = 'aguadg uydg uerygtuy eguy ' + (++i);
newMsg.setAttribute('class', 'msg');
div.appendChild(newMsg);
if (auto) {
div.scrollTop = div.scrollHeight;
}
}, 1000);
</script>
</body>
</html>
|
больше спасибо. Самый лучший способ я думаю. Только как бы сделать чтоб сразу скрол был снизу
|
Цитата:
scrollinDiv.scrollTop = 9999; |
а как к выше указаному коду прикрепить? а то я совсем тю-тю
|
Зачем тут интервал вообще? Вы че, всей толпой с ума посходили?
Алгоритм самый адекватный какой? Перед появлением нового сообщения смотрим - если скролл находится в самом низу - добавляем сообщение и докручиваем скролл. Иначе просто добавляем сообщение, оставляя скролл как есть (можно какую-нибудь нотификацию сделать, как в скайпе типа). А вы хуетой страдаете. Обсуждаете костыль, да еще и "самым лучшим способом" его называете :)) |
еше есть варианты как сделать? желательно готовые
|
| Часовой пояс GMT +3, время: 03:20. |