powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Определение, есть ли мышка на диве:
12 сообщений из 12, страница 1 из 1
Определение, есть ли мышка на диве:
    #35632116
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть див1. На нем абсолютом расположены еще мелкие некаторые дивы2. Так что получаеться когда мышка находит на эти мелкие дивы2, срабатывает onmouseover. А мне надо чтобы onmouseover срабатывал только когда мышка покидает область див1.

есть ли возможность как то это обойти?
Я попробовал в обработчик onmouseover вручную проверять не покинули ли область мышка, но что то не работает(

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
t=(getPositionCursor().y>place_of_loading.clientTop);
t=t and (getPositionCursor().y<place_of_loading.clientTop+place_of_loading.clientHeight);
t=t and (getPositionCursor().x>place_of_loading.clientLeft);
t=t and (getPositionCursor().x<place_of_loading.clientLeft+place_of_loading.clientWidth);
if(t){
//творим что надо
}

//где getPositionCursor() нашел в яндексе:
function getPositionCursor() 
	{	
	e =  window.event;	
	var cursor = {x: 0 , y: 0 };	
	if (e.pageX || e.pageY) 
		{
		cursor.x = e.pageX;
		cursor.y = e.pageY;
		} 
	else 
		{
		cursor.x = e.clientX + 
		(document.documentElement.scrollLeft || 
		document.body.scrollLeft) - 
		document.documentElement.clientLeft;

		cursor.y = e.clientY + 
		(document.documentElement.scrollTop || 
		document.body.scrollTop) - 
		document.documentElement.clientTop;
		}
	return cursor;
	}


Модератор:
Перенесено с форума PHP, Perl
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632225
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть возможность поставить обработчик на каждый из дивов2 (ссылаясь на одну функцию), то там можно поставить
event.cancelBubble = true; //IE
event.stopPropagation(); //FF
В этом случае при наведении на них не сработает обработчик дива1.

Не очень понятен вопрос, так как фразы "чтобы onmouseover срабатывал" и "когда мышка покидает область" противоречат друг другу.
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632232
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, да, для кроссбраузерности лучше писать так:
Код: plaintext
1.
if (event.stopPropagation) event.stopPropagation();
else event.cancelBubble = true;
Судя по литературе работает везде.
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632273
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прописал:
Код: plaintext
1.
2.
3.
4.
function cancel_mouse(){
	if (event.stopPropagation) event.stopPropagation();
	else event.cancelBubble = true;
	}
Затем на самих элемнтах:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<div id="big_div" class="hide">
  <div id="progress_load" class="hide">
    <img src="templates/loading.gif" width="76" height="8px" alt="Loading..."/>
  </div>
	
  <div id="progress_show" class="hide">	
    <div id="place_of_loading" onmouseover="anim_show_buttons()" onmouseout="anim_hide_buttons()"></div>

    <div class="starsfon">
			   ...
    </div>
/* элемнты каторые попадают поверх place_of_loading */
    <div onclick="prev_pic();" class="btnprev" id="toleft" onmouseout="cancel_mouse()" onmouseover="cancel_mouse()"> < </div>
    <div  onclick="hide();" id="toclose" class="btnclose" onmouseout="cancel_mouse()" onmouseover="cancel_mouse()"> X </div>
    <div onclick="next_pic();" class="btnnext" id="toright" onmouseout="cancel_mouse()" onmouseover="cancel_mouse()"> > </div>
	</div>		
/* все они закончились */
</div>
Всеравно не работает( Когда навожу на эти кнопки >, < и X - у меня срабатывает anim_hide_buttons()
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632303
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё надо бы писать
Код: plaintext
1.
onmouseout="cancel_mouse(event)"
А в обработчике
Код: plaintext
1.
2.
3.
function cancel_mouse(ev){
            ev.stopPropagation ? ev.stopPropagation() : ev.cancelBubble=true;
}
В принципе, как у IDVsbruck , только с параметром (и покошернее).
А так, посути, не очень понял, чего нужно.
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632465
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже самое ...
Не думал, что по поводу event'а надо так подробно разжевывать. Прдн.
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632719
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть галерея с мелкими картинкаи. КОгда на них нажимаешь то экран наполовину гаснет, грузитьс ябольшая версия картинки, и как она загрузилась показываеться пользвоателю. Слева на самом рисунке, справа на самом рисунке и в верхнем правом углу прямо на картинке расположены другие имаджики. Первые две это стрелочки перейти к следующей или к предыдушей картинке, а третья закрывает.

Когда мышка уходит с большой картинки в область затемнения, у меня эти три мелких картинки медлено исчезают, если же навести опять мышку на большой рисунок то они медлено анимирвоано поялвяються. Но когда я мышкой навожу на эти мелкие рисуночки, то у меня браузер считает что я ушол с "Большой картинки" и начинает опять прятать эти мелкие.

зы. Шас попробую таким способом...
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632726
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeЕщё надо бы писать
Код: plaintext
1.
onmouseout="cancel_mouse(event)"
А в обработчике
Код: plaintext
1.
2.
3.
function cancel_mouse(ev){
            ev.stopPropagation ? ev.stopPropagation() : ev.cancelBubble=true;
}
В принципе, как у IDVsbruck , только с параметром (и покошернее).
А так, посути, не очень понял, чего нужно.Неа, не пашет( Всеравно
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632740
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага. Теперь понятно. Канселбаббл здесь больному не поможет. Вариантов миллион. Можно например заряжать таймер по онмоусеоут, а по приходе мыши на кнопочки, его гасить и т.д. Так же картинку можно по другому делать, т.е. формировать на сервере имажу с кнопочками и анализировать позицию мышекурсора. Но чтобы не мучаться и ничего не переделывать, попробуй с таймером, я где-то аналогичную штуку делал - работает.
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632855
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал на таймерах. Идея хорошая но в моем случае не прокатила(
зато заработала такая конструкция:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function anim_hide_buttons(){
	var tl=document.getElementById("place_of_loading").offsetParent.offsetLeft;
	var tt=document.getElementById("place_of_loading").offsetParent.offsetTop;
	var tw=document.getElementById("place_of_loading").clientWidth;
	var th=document.getElementById("place_of_loading").clientHeight;
	var tm = mousePageXY();
	
	var t=(tl<tm.x)&&(tt<tm.y)&&(tl+tw>tm.x)&&(tt+th>tm.y);
	if(!t){
....
}
}
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35632894
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не согласен, что баблинг не прокатит ... Просто важно сделать грамотный сценарий работы.
Просто на onmouseover и out бабблинг ставить не надо, а на onclick надо.
Не очень понимаю причин проблемы ...
...
Рейтинг: 0 / 0
Определение, есть ли мышка на диве:
    #35633011
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckНе согласен, что баблинг не прокатит ... Просто важно сделать грамотный сценарий работы.
Просто на onmouseover и out бабблинг ставить не надо, а на onclick надо.
Не очень понимаю причин проблемы ...
причина проблемы в том, что когда мыша оказывается на внутренних по отношению к контейнеру объектах, в контейнере срабатывает mouseout. Пример:
Код: plaintext
1.
2.
3.
4.
<div id="outerDiv" style="border:1px solid; padding:20px" onmouseout="var obj = event.srcElement || event.target; alert(obj.id);">
	qwertyuiop
	<div id="innerDiv" style="border:1px solid red; padding:20px"">inner div</div>
	asdfghjkl'
</div>
cancelBubble здесь не поможет, т.к. сначала срабатывает mouseout для внешнего дива, а только потом уже наступают события внутреннего. Об onclick'е речь вообще не идет.
Я через таймер делаю.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Определение, есть ли мышка на диве:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]