Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

определение времени при событии mouseOver

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Сайтостроение
 
Автор Сообщение
Martin

Завсегдатай


Зарегистрирован: 28.07.2009
Сообщения: 623
Откуда: Харьков

СообщениеДобавлено: Пн Фев 13, 2012 6:08 pm    Заголовок сообщения: определение времени при событии mouseOver
Ответить с цитатой

помогите разобраться. есть функция, которая выводит текст с эфектом пишушей машинки при наведении на объект, и функция, которая удаляет текст, когда курсор мыши покидает объект. События, соответственно - mouseOver и mouseOut. Траьл в том, что, когда посетитель водит курсором на сайте, выбирая что ему нужно и невзначай курсор пересекает быстро данный объект, происходит следущее: mouseOver запускает функцию которая "печатает текст", (! прошу здесь внимания) но неуспев "допечатать" текст, курсор покидает объект и срабатывает mouseOut, который удаляет текст после увода курсора, но текст который продалжает "допечатываться" соответственно не трогает. Пример: текст вывода "телемеханические контроллеры". Если быстро провести курсор через объект, соответственно, часть слова "телемеханич" успела напечататься и удалиться, а оставшаяся часть которая продолжает допечатываться "еские контроллеры" остается. Я ничего кроме settimeout придумать не смог, повесив последнего к функции которая удаляет текст, чтобы удаляла его с задержкой. Но теперь жопа вылезла в другом месте - терь создается впечатление заторможеного сайта, когда курсор попадает и покидает объект и текст удаляется с задержкой. Как было бы хорошо если существовала функция, которая определяла, какое время курсор находится над объектом и только тогда запускала функцию по событию mouseOver Rolling Eyes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anderson

Завсегдатай


Зарегистрирован: 08.07.2006
Сообщения: 642
Откуда: localhost

СообщениеДобавлено: Пн Фев 13, 2012 11:44 pm    Заголовок сообщения:
Ответить с цитатой

Martin, можешь сделать глобальный счетчик напечатанных буков. Алгоритм таков:
1) Создаешь таймаут (или интервал, зависимо от твоего механизма) для печатания текста таким образом:
Код:
timeout = setTimeout(...)

или
Код:
interval = setInterval(...)

и увеличиваешь при печатаньи каждой буквы глобальный таймер printedLettersCount (чтобы знать потом, сколько букв уже напечатано)
Важно, чтобы timeout (или interval) был глобальной переменной.
2) При срабатывании onMouseOut убиваешь первый таймер:
Код:
clearTimeout(timeout)

или
Код:
clearInterval(interval)

и запускаешь новый таймаут (или интервал), который чистит буквы в зависимости от значения printedLettersCount.

Пример реализации похожего механизма в главной верхней менюшке здесь: http://alexdunai.com (правда, не совсем такой механизм. Писал я, за говнокод строго не судитеSmile )
Если быстро наводить или убирать курсор, кнопка не глючит.
Написано чистым JS без JQuery.
_________________
ArchLinux + Enlightenment 17 (E17)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение anderson.dunai@gmail.com Моб. телефон ICQ Number
Martin

Завсегдатай


Зарегистрирован: 28.07.2009
Сообщения: 623
Откуда: Харьков

СообщениеДобавлено: Вт Фев 14, 2012 6:59 pm    Заголовок сообщения:
Ответить с цитатой

этот скрипт выводит текст с задержками:
Код:
String.prototype.delayingWrite = function(obj, delay)
{
   if (this.length>0)
   {
      if (typeof obj == 'string') obj = document.getElementById(obj);
      
      obj.innerHTML += this.charAt(0);
      s = this.substr(1);

      if (s) setTimeout(function(){s.delayingWrite(obj, delay);},delay);
   }
}

обращаться к нему так:
Код:
mouseOver="'text text text'.delayingWrite('#element',20);"

вопрос - как правильно обратиться к settimeout внутри функции. его то мне как раз и нужно прикончитьт
Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Сайтостроение Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис