Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2014, 11:26   #1
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию Скроллинг в чате

Здравствуйте. Есть у меня недочат. Он каждые 3сек. подгружает сообщения и в автомале пролистывается вниз. Как сделать так, чтобы при наведение на поле с сообщениями, он не скроллился?
Код HTML:
<div id="all_form">
	<div id="cht">
		<div id="messages"></div>
<script type="text/javascript">
	//Загружаем библиотеку JQuery
	google.load("jquery", "1.3.2");
	google.load("jqueryui", "1.7.2");
	
	//Функция отправки сообщения
	function send()
	{
	//Считываем сообщение из поля ввода с id mess_to_add
	var mess=$("#mess_to_send").val();
	// Отсылаем паметры
	$.ajax({
	  type: "POST",
	  url: "add_mess.php",
	  data:"mess="+mess,
	  // Выводим то что вернул PHP
	    success: function(html)
	    {
	    //Если все успешно, загружаем сообщения
	    load_messes();
	    //Очищаем форму ввода сообщения
	    $("#mess_to_send").val('');
	    }
	    });
	}
	
	//Функция загрузки сообщений
	function load_messes()
	{
	  $.ajax({
	  type: "POST",
	  url:  "load_messes.php",
	  data: "req=ok",
	  // Выводим то что вернул PHP
	    success: function(html)
	   {
	    //Очищаем форму ввода
	    $("#messages").empty();
	    //Выводим что вернул нам php
	    $("#messages").append(html);
	    //Прокручиваем блок вниз(если сообщений много)
	    scrolling ();
	    $("#messages").scrollTop(90000);
	    }
	  });
	}

function scrolling(e)
 {
  e = e || event;
  if (e.type == '#messages')
 {
  var fromElem = e.fromElement || e.relatedTarget;
  var toElem = e.srcElement || e.target;
 }
  function str(el) {return el ? (el.id || el.nodeName) : 'null';}
 }
	
</script>

<table>
	<div id="cht">
		<div id="messages"></div>
	<form action="javascript:send();" id="ma">
	<input type="text" id="mess_to_send">
	<input type="submit" value="Отправить">
</div>
</table>


<script>
load_messes();
setInterval(load_messes,3000);
</script>
Parallelogram вне форума Ответить с цитированием
Старый 20.05.2014, 12:34   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Ставите слушатели на события mouseover\mouseleave для поля чата и изменяете флаг. При вставке новых сообщений, в зависимости от значения выставленного флага, делайте скролл чата.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 20.05.2014, 12:47   #3
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Код:
var enableScroll = true;

$("#messages").mouseenter(function(){
  enableScroll = false;
}).mouseleave(function() {
  enableScroll = true;
});

function load_messes() {
    $.ajax({
        type: "POST",
        url: "load_messes.php",
        data: "req=ok",
        // Выводим то что вернул PHP
        success: function (html) {
            //Очищаем форму ввода
            $("#messages").empty();
            //Выводим что вернул нам php
            $("#messages").append(html);

            if (enableScroll) {
                scrolling();
                $("#messages").scrollTop(90000);
            }
        }
    });
}
Надо пробовать.
ATL вне форума Ответить с цитированием
Старый 21.05.2014, 02:14   #4
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию

Работает так, как будто написан просто scrollTop()
Код:
$("#messages").append(html);
	    $("#messages").scrollTop();
И не работает автоскроллинг.

Последний раз редактировалось Parallelogram; 21.05.2014 в 02:18.
Parallelogram вне форума Ответить с цитированием
Старый 21.05.2014, 07:01   #5
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Цитата:
И не работает автоскроллинг.
Осмелюсь предположить, что вы пытаетесь навесть слушатели на события до завершения построения DOM.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
авторизация в чате Nor61k Общие вопросы Delphi 1 04.04.2014 23:38
Ошибка в чате. Aleksandr Работа с сетью в Delphi 9 09.04.2013 20:18
Оформление в чате mish@ Общие вопросы Delphi 5 01.03.2010 21:45