Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отключить прокрутку контента div'a? при его обновлении аяксом? 
:(
    Опции темы
begin
Дата 15.5.2011, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



На сайте есть два блока со списком сообщений, расположены в разных разделах. Оба обновлются аяксом по таймеру на предмет новых сообщений.
Первый имеет такой стиль:
Код

.message-list2 {height:220px; width:500px;border:1px solid #2b88c9;padding:5px;font-family:arial; overflow-y:scroll;}

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

Второй блок имеет такой стиль:
Код

.message-list {border:1px solid #2b88c9; overflow-y:scroll; height:250px;}

и ведет себя НЕПРАВИЛЬНО: каждый раз при обновлении его контента бегунок перескакивает наверх.  smile 
Из-за этого невозможно читать старые сообщения.

Подскажите, почему так? У обоих прописано одинаковое свойство overflow-y:scroll;
Как вообще правильно прописать стиль для такого поведения блок?


PM MAIL   Вверх
ReFleX
Дата 15.5.2011, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 26.9.2004
Где: Таллинн

Репутация: 1
Всего: 3



запусти в конце обновления:
document.body.scrollBottom = '0';
PM WWW   Вверх
begin
Дата 15.5.2011, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Цитата(ReFleX @ 15.5.2011,  17:43)
запусти в конце обновления:
document.body.scrollBottom = '0';

Сделал по вашему совету, и теперь код выглядит так:
Код

$("#text").load("refresh.php",{chat_type:chat_type});
document.body.scrollBottom = '0';

Но не помогло  smile 
PM MAIL   Вверх
Amphiluke
Дата 15.5.2011, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 9
Всего: 112



Цитата(begin @  15.5.2011,  22:08 Найти цитируемый пост)
Но не помогло

Потому что такого свойства (scrollBottom) не существует.  smile  Есть scrollTop, и если надо прокрутить до низа, то
Код

$("#text").load("refresh.php",{chat_type:chat_type}, function() {
    var txt = $("#text").get(0);
    txt.scrollTop = txt.scrollHeight;
});


Добавлено через 6 минут и 44 секунды
Если же надо, чтобы после загрузки положение бегунка принимало прежнее значение (как до вызова метода .load()), то, возможно, стоит попробовать запоминать значение scrollTop в переменной и посли подгрузки содержимого восстанавливать его явно. Только, думается, что выглядеть это будет не очень. Поскольку вы полностью обновляете содержимое, то наверное, текст будет дергаться сначала вверх, а потом на прежнее положение. 
PM   Вверх
Amphiluke
Дата 15.5.2011, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 9
Всего: 112



Впрочем, простой тест показывает, что никаких проблем быть не должно smile
Код

<script type="text/javascript">
    function foo() {
        $("#text").html($("#text").html() + $("#text").html());
    }
    $(document).ready(function() {
        setInterval(foo, 3000);
    });
</script>


<div id="text" style="height:100px; border:1px solid; overflow:auto;">
    1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15
</div>

PM   Вверх
begin
Дата 15.5.2011, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Цитата(Amphiluke @ 15.5.2011,  21:59)
Впрочем, простой тест показывает, что никаких проблем быть не должно

В том то и дело, что в блоке с аналогичным стилем все в порядке. А этот почему-то глючит  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.