Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2015, 15:29
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

Скроллинг чата
Есть чат , сделал автоскролинг в низ. Но теперь если пытаюсь прокрутить сообщения в верх скроллинг уходит всеравно в низ, как с этим можно боротся?

<script type="text/javascript">
window.onload = function(){
   var scrollinDiv = document.getElementById('responce');
   setInterval(function() {          
        scrollinDiv.scrollTop = 9999;
   }, 3000);
}

</script>

<div id="responce"></div>
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2015, 15:32
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 182

Напиши человеческим языком, что делает эта функция и найдешь причину.
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2015, 15:57
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

в чате есть сообщения, эта функция всевремя прокручивает окно чат в низ. Сообщения даже новые могут не приходить а окно чата постоянно внизу, если я вверх пытаюсь пролиснуть чат, оно меня обратно вниз скидывает
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2015, 16:00
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 182

http://javascript.ru/setInterval
Первое же предложение в описании
Ответить с цитированием
  #5 (permalink)  
Старый 20.03.2015, 16:16
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

если вручную прокручиваешь до конца, то при добавлении сообщения будет идти автоскролл. если нет то нет)
<!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>
Ответить с цитированием
  #6 (permalink)  
Старый 20.03.2015, 20:54
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

больше спасибо. Самый лучший способ я думаю. Только как бы сделать чтоб сразу скрол был снизу
Ответить с цитированием
  #7 (permalink)  
Старый 20.03.2015, 21:32
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от porezon
Только как бы сделать чтоб сразу скрол был снизу
scrollinDiv.scrollTop = 9999;
Ответить с цитированием
  #8 (permalink)  
Старый 20.03.2015, 21:33
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

а как к выше указаному коду прикрепить? а то я совсем тю-тю
Ответить с цитированием
  #9 (permalink)  
Старый 20.03.2015, 22:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Зачем тут интервал вообще? Вы че, всей толпой с ума посходили?

Алгоритм самый адекватный какой? Перед появлением нового сообщения смотрим - если скролл находится в самом низу - добавляем сообщение и докручиваем скролл. Иначе просто добавляем сообщение, оставляя скролл как есть (можно какую-нибудь нотификацию сделать, как в скайпе типа).
А вы хуетой страдаете. Обсуждаете костыль, да еще и "самым лучшим способом" его называете )
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 23.03.2015, 11:10
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

еше есть варианты как сделать? желательно готовые
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скроллинг в табах Veterinar Элементы интерфейса 10 06.12.2014 17:47
скроллинг фотографий. haligali jQuery 1 13.09.2011 09:03
Скрипт ajax чата seoabcd Общие вопросы Javascript 2 20.02.2011 18:39
Скроллинг с задержкой vladpro Работа 1 24.01.2011 22:12
Скроллинг с задержкой vladpro Общие вопросы Javascript 3 24.01.2011 14:00