Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: jq чат вопрос

Сообщения:  [1-10]   [11-18] 

 
 автор: Deed   (10.10.2014 в 08:04)   письмо автору
 
   для: Sharax   (10.10.2014 в 04:00)
 


var objDiv = document.getElementById("your_div");
objDiv.scrollTop = objDiv.scrollHeight;

  Ответить  
 
 автор: confirm   (10.10.2014 в 04:46)   письмо автору
 
   для: Sharax   (10.10.2014 в 04:00)
 

Нет такой функции, которая бы "говорила" что прокрутка в середине, для этого надо получать ее текущее положение (ссылку на метод для этого я вам и дал), и далее проводить расчет, дабы узнать. Самое верхнее это 0, рассчитывать ничего не надо.

Для того чтобы отслеживать перемещение, нужно отслеживать соответствующее событие, для прокрутки в JQ это scroll(). Вот в обработчике этого события и рассчитывайте положение прокрутки и делайте чего вам надо.

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

  Ответить  
 
 автор: Sharax   (10.10.2014 в 04:00)   письмо автору
 
   для: confirm   (10.10.2014 в 02:41)
 

я не знаю как перефразировать свой вопрос чтобы было понятно ))
есть div с вертикальным скроллом, scrollTop определяет текущее положение скролла, если его опустить в самый низ, то он предположим будет иметь значение 1320 если его поднять на середину, то его значение будет 660. Так вот, вопрос состоит в том, какой функцией (без разницы jq или js) можно получить цифру 1320 в тот момент, когда скролл находится на середине или в начале или в любом другом месте, но не в конце (не в самом низу)???

  Ответить  
 
 автор: confirm   (10.10.2014 в 02:41)   письмо автору
 
   для: Sharax   (10.10.2014 в 02:24)
 

Здесь описан метод

При получении нового в любом случае надо переместить пользователя к новому, иначе как же он поймет, что появилось новое? Вот этого я точно не понимаю.

  Ответить  
 
 автор: Sharax   (10.10.2014 в 02:24)   письмо автору
 
   для: confirm   (10.10.2014 в 01:42)
 

вы меня немного не поняли, сообщения в любом случае в div новые приходят, только от положения текущего скролла должно зависеть опускается скролл к последнему сообщению или нет

чат с двуя окнами в одной сообщения в другом история возможен, но для чего, если чтобы реализовать первое мне достаточно узнать максимальную высоту scrollTop, но как это сделать я пока не знаю и пытаюсь узнать на этом форуме

  Ответить  
 
 автор: confirm   (10.10.2014 в 01:42)   письмо автору
 
   для: Sharax   (10.10.2014 в 01:06)
 

>Вообще проверку на новое сообщение я решил делать только для того, чтобы когда пользователь чата просматривает (скроллингом вверх) историю переписки в чате, чтобы scrollTop не мешал

Оригинально. А каким образом тогда вообще эта история появляется? Да и вообще зачем запрашивать - загрузили то что было, и пусть крутит, ничего мешать не будет.

Какое отношение может иметь скроллингг объекта к событиям на на сервере, которые протекают вне ведома клиента? По барабану какой на клиенте скроллинг, пока он не обратиться к серверу с вопросом есть ли новое, он не узнает ответа на это.

Не выдумывайте граблей - запрос не для того, чтобы что-то не мешало, а именно для того, чтобы знать ответ. И 2,5 секунд это уж как посмотреть, не смертельно было бы и 5, а может и больше.

Как вы вообще себе представляете чат? Если гребсти все, то можно ли понять о чем это все? А если групповой, то только те кто участвуют в группе. А это означает, что и за час может ничего не быть нового, а может и пачка целая, а это неизбежно прокрутка, хотите вы этого или нет. А по разумному, так разделите окно чата на две части, если уж так охота что-то прокручивать и новое не мешало. В одну часть приходит новое, которое автоматом позиционируется на первое сообщение, другая часть это история. Прокрутили новое, прочли его значит, после чего таймером (по новому поступлению) перемещается в историю.

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

  Ответить  
 
 автор: Sharax   (10.10.2014 в 01:41)   письмо автору
 
   для: Sharax   (10.10.2014 в 01:06)
 

Сейчас такой вопрос возник, как узнать максимальное значение scrollTop() ?
Т.е.
$('#chatwin').scrollTop() - текущая позиция скролла
$('#chatwin').scrollHeight() - высота div
мне нужно узнать максимально возможное значение $('#chatwin').scrollTop() для того, чтобы я мог сравнить его с текущим значением скролла и если разница менее 30px то скролл опускать, в противном случае его не трогать.

Тогда получится что если пользователь читает предидущие сообщения, то скроллинг не дергается вниз, если он его опускает до самого низа, то скролл снова начинает работать.

В общем как узнать возможный максимум $('#chatwin').scrollTop()?

  Ответить  
 
 автор: Sharax   (10.10.2014 в 01:41)   письмо автору
 
   для: Sharax   (10.10.2014 в 01:06)
 

.

  Ответить  
 
 автор: Sharax   (10.10.2014 в 01:06)   письмо автору
 
   для: confirm   (09.10.2014 в 13:01)
 

Со временем обновления я согласен, поставил больше. 2,5 сек
Вообще проверку на новое сообщение я решил делать только для того, чтобы когда пользователь чата просматривает (скроллингом вверх) историю переписки в чате, чтобы scrollTop не мешал
Я подумал, может быть рациональнее будет сделать проверку, что если скролл у div в самом низу тогда докручиваем его в самый низ с каждым вызовом ф-ии обновления, если скролл не в самом низу, то его не трогаем.

  Ответить  
 
 автор: Deed   (09.10.2014 в 19:59)   письмо автору
 
   для: Sharax   (09.10.2014 в 12:13)
 

Ладно, попытаюсь объяснить "на пальцах". УПРОЩЕННО.
В last_data нужно помещать html блока, содержащего чат. А в success: function(data) - отформатированную выборку из базы (в переменной data). И, если содержимое этих переменных идентично, ничего не делаем. В противном случае "переписываем" html блока с чатом.
Но это - фигня. Громоздкая фигня.
Нужно не переписывать все содержимое чата и не гонять его туда-сюда между сервером и клиентом, а, к примеру, передавать на сервер id последней реплики, на сервере проверять, появилась ли в базе запись с id, большим чем в чате. Если нет, то ничего не делаем, если да, то выводим ТОЛЬКО ПОСЛЕДНИЕ РЕПЛИКИ, ДОБАВЛЯЯ ИХ в конец чата.
Поэтому, не нужно сравнивать эти две переменные (last_data & data), а нужно проверять, что возвращает обращение к файлу refresh.php - пропишите в нем, в случае отсутствия новых записей, к примеру, echo "empty", то есть, если в data будет "empty" - не делаем ничего, в противном случае - остальное.

  Ответить  

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования