Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2012, 04:29
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Ложное срабатывание onmouseout - возникает, когда курсор проходит над строкой текста
Блочный элемент имеет внутри себя параграф с текстом и ссылками. При прохождении курсора над ссылкой срабатывает onmouseout, как если бы курсор вышел за пределы этого блочного элемента.

Как с этим бороться? Может есть изящный метод?

Последний раз редактировалось Почемучкин, 29.08.2012 в 04:34.
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2012, 06:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

onmouseleave
вот тут подробнее onmouseout и линк
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2012, 08:01
Аспирант
Отправить личное сообщение для Юсуф Посмотреть профиль Найти все сообщения от Юсуф
 
Регистрация: 09.03.2012
Сообщений: 68

Я так понял, оно у Вас должно срабатывать когда курсор внутри блока?Если так то сделайте так задайте блоку div такие вот стили
#div {background-color: red; height: 50px;}

Этим вы узнаете сместился ли ваш блок а если так, то задайте высоту блоку, я указал 50px но должны указать свой размер. Если не так Вас понял то простите
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2012, 11:00
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 16.12.2011
Сообщений: 4,415

вот функция срабатует только когда курсор ушел с элемента а не ушел на потомка
function hover (options) {

 options.elem.onmouseover = ElemMouseAction;	 
 options.elem.onmouseout = ElemMouseAction;
 	
 function ElemMouseAction (evt) {
  var related, Call;
  var e = evt || event;	 
 
	if(e.type == 'mouseover'){  
	  Call = options.over; 
	  related = e.relatedTarget || e.fromElement;
	  
	} else {
	  Call = options.out; 
	  related =  e.relatedTarget || e.toElement;
	  
		}
		
			
	while (related && related != this) {
		related = related.parentNode;
		} 
	  
	  if(related == this) return;
	 
	  Call();
	 
	 }	

	
	}
//пример вызова
hover({
 elem: document.getElementById('elem'),
 over:function () {//функция для mouseover
   .... 
   },
   out:function () {//функция для mouseout
   .... 
   },

})
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2012, 14:29
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Спасибо!

Кстати, оказалось, что onmouseleave работает не только под IE, но и под FireFox 13 - и у него нет подобного эффекта. Однако для кроссбраузерности это все равно не годится.

В общем, правильно считать, что при onmouseout не курсор выходит за пределы элемента, как об этом пишут, а элемент скорее теряет фокус (или как это правильнее сказать?)
А вот onmouseleave происходит именно когда курсор покидает пределы элемента (но к сожалению работает не везде).
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2012, 15:16
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,745

вы ж здесь с 2011 http://learn.javascript.ru/mousemove-events
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2012, 16:10
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

bes,
Ну, я мимоходом)
Ответить с цитированием
  #8 (permalink)  
Старый 29.08.2012, 20:44
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 16.12.2011
Сообщений: 4,415

Сообщение от Почемучкин Посмотреть сообщение
Спасибо!

Кстати, оказалось, что onmouseleave работает не только под IE, но и под FireFox 13 - и у него нет подобного эффекта. Однако для кроссбраузерности это все равно не годится.

В общем, правильно считать, что при onmouseout не курсор выходит за пределы элемента, как об этом пишут, а элемент скорее теряет фокус (или как это правильнее сказать?)
А вот onmouseleave происходит именно когда курсор покидает пределы элемента (но к сожалению работает не везде).
глюк в том что mouseout/mouseover из за всплытия срабатывает когда курсор переходит на дочерний элемент , а mouseenter/leave не кроссбраузерно поэтому я и написал ту функцию для себя(давно)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Находиться ли курсор над объектом, когда клик вне него (объекта) kichSman jQuery 4 04.09.2011 16:18