Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » onMouseOut, смена opacity и FireFox

Ответить
Настройки темы
onMouseOut, смена opacity и FireFox

Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip smooth.zip
(2.6 Kb, 5 просмотров)
Доброго времени суток господа.
Интересная вещь, однако. Задумался на эффектом ссылки. Эффект со следующей сутью - при наведении (onMouseOver) ссылка (с бэкграундным изображением и бордером) начинает плавно мерцать - менять прозрачность в пределах 30-100%. Создается впечатление флэш-анимации текстовой ссылки.
Реализация работает для IE, но в FF обнаруживается, что при интенсивной смене opacity (10 раз в секунду с |delta| = 15%) не срабатывает событие onMouseOut, т.е. невозможно установить когда прекращать выполнение анимации. Замечено также, что такой багоглюк происходит только когда время задержки указателя на ссылке > ~2 сек. если быстро навести и свести указатель, то FF обрабатывает событийность корректно, во всех иных случаях это не так. Также глюки начинаются когда имеется суммирование тукущей opacity и delta (см. зеленый код). Если суммирование убрать, т.е. opacity=opacity, то глюк не проявляется. приходим к мысли, что при интенсивной смене opacity FF некорректно обрабатывает события сведения указателя с объекта, оно просто не происходит.
Код: Выделить весь код
function flash(id)
  {
   var inp = document.getElementById('inp');
   if (browser.isIE)
     {
      var obj = document.getElementById(id);
      if ((obj.filters.alpha.opacity + delta > 100) || (obj.filters.alpha.opacity + delta < 30))
        delta = - delta;
      obj.filters.alpha.opacity += delta;
      inp.value=iCnt+')'+' opacity:'+obj.filters.alpha.opacity+' delta:'+delta/100;
     }
   if (browser.isGecko)
     {
      var obj = document.getElementById(id).style;
      if ((obj.opacity >= 1) || (obj.opacity <= 0.3) )
        delta = - delta;
      obj.opacity = parseFloat(obj.opacity)+delta/100;
      inp.value=iCnt+')'+' opacity:'+parseFloat(obj.opacity)+' delta:'+delta/100;
     }
  }
Еще интересный момент - в документе (см. аттач) имеется вторая ссылка в событиях которой прописан обычный alert. Так в FF, если быстро провести указатель мыши так, что траектория пересекает эту вторую ссылку, то событие onMouseOut будет обработано только после того, как будет сдвинут указатель относительно конечной точки траектории.
P.S. Инпут, расположенный на форме, имеет задачу вывода текущих значений счетчика наведений(+1) и сведений(-1) мыши на/с объект(а), прозрачности объекта и текущего значения дельты прозрачности. Как видно в IE счетчик должен принимать значения 0|1.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 11:25, 09-08-2005

 

Аватара для slaine

Ветеран


Сообщения: 675
Благодарности: 8

Профиль | Отправить PM | Цитировать


В опере7 вообще неработает.
Я так понял, что програмно делать такие эффекты не благодарное дело,
проще сделать гиф или флэш!

-------
живодёр - практик


Отправлено: 12:13, 09-08-2005 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


Prisoner
напиши в ff. Похоже, имеет смысл :/

Отправлено: 13:06, 09-08-2005 | #3


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


slaine
Разумеется, сделать все для всех - трудновато . На все есть своя причина - opera не поддерживает css3-свойство opacity, а своих фенек по изменению прозрачности у нее нет. Впрочем это не важно, приведенный код - вещь сугубо интимная и дальше IE с FF не пойдет.
mar
угу... и судя по списку багов связанных с событием onMouseOver(Out) я не буду первым .

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 16:57, 09-08-2005 | #4

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


slaine
ну и вообще код всегда менее энергоемок, чем использование gif и flash. Да и вообще решение элегантное

Отправлено: 17:11, 09-08-2005 | #5


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Состоялся следующий диалог (сорри, за убогий аглицкий) из трех фраз
Цитата:
When some code is frequently changes opacity of some object, onMouseOut of that
object not fires. This trouble arise when mouse pointer stay on object at least
2-3 seconds. I noticed that problem arise when delta (of opacity) is added to
current opacity - some_object.style.opacity (see attach, line 40). If I write
"some_object.style.opacity = some_object.style.opacity" (without adding delta),
when onMouseOut occur correctly, but without necessary functionality. So, the
summary: at intensive opacity changes event onMouseOut not fires.

Reproducible: Always

Steps to Reproduce:
See attach
Цитата:
Seems to work fine for me in the latest nightly trunk build.
Could you please test again with the nightly trunk build?
Цитата:
Yes, you are absolutely right. I'm sorry for disturbance - I didn't know about
the nightly trunk build .
Но это как говорится последний писк технологии, стало быть необходимо делать финты ушами или применять эффект только лишь для IE :\.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 10:26, 12-08-2005 | #6



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » onMouseOut, смена opacity и FireFox

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Firefox michael821 Хочу все знать 2 07-01-2010 15:07
не получается скрыть меню при onmouseout koresaram Вебмастеру 11 07-03-2009 15:46
Логотип Firefox wale Флейм 5 23-11-2008 18:44
Firefox во FreeBSD 6.2 dzhserv Общий по FreeBSD 3 06-03-2007 11:36
firefox и xhtml Demiurg Вебмастеру 7 19-02-2007 12:09




 
Переход