Jump to content
  • 0

Как разрулить ситуацию с onclick


still swamp
 Share

Question

Есть выпадающее меню на div. Вызывается при помощи клика мыши на каком нить объекте. <img ... onclick="myPopup()">. Далее есть обработчик document.onclick который проверяет, есть ли под курсором меню и если есть то закрывает его. Сделано это для того что бы можно было кликнув мимо закрыть попап. В том случае если изначально меню открывается под курсором, то все нормально. Если же меню открываеться в стороне, то после img onclick открывающего меню, сразу же срабатывает document.oncick закрывающий меню.

Требуется совет как разрулить ситуацию. Я вижу 2 возможности:

1. При открытии меню под ним на весь экран делать какой слой. Не хочется так как громоздко.

2. Как то удавить событие onclick что бы оно не дошло до document, однако как это сделать - не знаю

Подскажите решение (возможно иное)

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Блин, помню давно поднималась тема на подобии на форуме. И в ней кажись Great Rash участвовал, даже по-моему создавал её он сам-же. Поищи в поиске или его дождись, возможно сможет помочь.

Link to comment
Share on other sites

  • 0

Можно еще один вариант... систему семафоров.

Те если в момент открытия попапа курсор находится не над ним, то устанавливается семафор глобальный который потом в document.onclick проверяется, и скидывается. Но тоже городушка еще та.

Link to comment
Share on other sites

  • 0
Можно еще один вариант... систему семафоров.

Те если в момент открытия попапа курсор находится не над ним, то устанавливается семафор глобальный который потом в document.onclick проверяется, и скидывается. Но тоже городушка еще та.

Ну да, уже беспределом попахивает)

Link to comment
Share on other sites

  • 0
Ну да, уже беспределом попахивает)

Таки не поверите. Все оказалось после обдумывания очень просто.

Popup вызывается на onclick, а закрывается на onmousedown. Те onmousedown срабатывает до onclick и все разрешается само собой.

Вот.

Link to comment
Share on other sites

  • 0
Таки не поверите. Все оказалось после обдумывания очень просто.

Popup вызывается на onclick, а закрывается на onmousedown. Те onmousedown срабатывает до onclick и все разрешается само собой.

Вот.

Если не сложно, сделай отдельную страничку с маленьким примером. И дай ссылочку.

Link to comment
Share on other sites

  • 0

Все тут

Ну или на всяк случай вот он:

document.onmousedown=function(e)

{

var obj;

obj=document.getElementById('clPopupMenu');

if (obj)

{

var p1=parseInt(obj.style.left);

var p2=parseInt(obj.offsetWidth)+p1;

var p3=clGetObjectTop(obj);

var p4=parseInt(obj.offsetHeight)+p3;

if (!((posX>=p1) && (posX<=p2) && (posY>=p3) && (posY<=p4)))

{

clPopupClose('clPopupMenu');

}

}

};

function clPopupClose(AName)

{

var obj;

if (AName=='') {AName='clPopupMenu';}

obj=document.getElementById(AName);

if (obj)

{

/*Остановка таймера*/

clearInterval(obj.Timer);

obj.Timer=null;

obj.innerHTML=''; /*Очистка содержимого*/

obj.style.display='none'; /*Убираем объект с экрана*/

}

}

Edited by still swamp
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy