Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мышь над скролбаром, как узнать? 
:(
    Опции темы
Smak
Дата 26.2.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пишу себе чат. Проблемма со скролом.
Скролл опускается вниз каждые 300 милискунд. При попытке поднять его вверх он естественно практически сразу опускает скролл вниз, тем самым не позволяет просмотреть прошлые сообщения.

Есть:
Код

function scroller(obj)
{
    obj.scrollTop=obj.scrollHeight;
}

setInterval('scroller(document.getElementById(\"res\"))',300);


Я так понимаю надо: 
Код

function scroller(obj)
{
     if (мышь не над скролом) obj.scrollTop=obj.scrollHeight;
}

setInterval('scroller(document.getElementById("res"))',300);

res - это div в котором и есть текст

Собственно как определить находится мышь над скролом или нет?

ЗЫ: почему-то setInterval('',300); с меньшем интервалом времени работать не хочет.
PM MAIL WWW ICQ   Вверх
AKS
Дата 27.2.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


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

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



Smak, можно попытаться сделать так:
Код

function doScroll(aObj) {
    if (!aObj.onMouseOvered)
        aObj.scrollTop = aObj.scrollHeight;
    setTimeout(function () { doScroll(aObj); }, 1000);
}

где св-во onMouseOvered (говорит само за себя) будет менять значения true/false. Для этого нужно на блок "повесить" обработчики событий onmouseover/onmouseout.
PM MAIL   Вверх
Smak
Дата 27.2.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(AKS @  27.2.2007,  15:58 Найти цитируемый пост)
Для этого нужно на блок "повесить" обработчики событий onmouseover/onmouseout.

дык в этом вопрос и заключается. как собственно представить этот обработчик?
PM MAIL WWW ICQ   Вверх
12345c
Дата 27.2.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

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



Специально скроллбар никаким событием не выделяется. Но относится к документу. Поэтому нужно ловить d.body.onmousemove и анализировать положение в окне (свойство в event). Сложными вычислениями определяем, где она находится. ("Сложность" в том, чтобы прежде узнать ширину и наличие скролла другими измерениями.)

(Другие измерения, предупрежу вопрос, - сделать объект с width=100% и bottom:0, взять координаты, сравнить с размерами окна. Определится, есть ли скроллбары и их ширина. Немного по-разному этот объект (div) ведёт себя в разных браузерах, так что настройка на полдня обеспечена.)

Добавлено @ 14:00 
Да, но по задаче, такого не надо. Достаточно просто узнать, что мышь правее какой-то границы, и отключить скролл. Или отключить, пока мышь нажата. Или (лучше) включать только тогда, когда юзер сам подвёл скролл к нижней границе (вычисляется разностью scrollTop, offsetHeight и чего-то там ещё).
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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