Ik ben bezig met een simpel pop-up menu te maken mbv javascript. Ik doe dit redelijk op de standaard manier door een DIV met daarin een aantal links zichtbaar te maken zodra de mouse over het bovenliggende menu element komt (dit is een A element met een onmouseover attribuut).
Het probleem waar ik mee zit is dat het menu ook weer eens weg moet. Bij het verplaatsen van de muis naar een andere A gaat dit goed (ik zet de vorige DIV's visibility op 'hidden'), maar ik zit een beetje met de situatie waneeer een user zijn muis pointer buiten de pop-up (div) beweegt.
Logisch zou je zeggen dat je dit met "onmouseout" van het betreffende DIV element opvangt, maar ik merk dat die ook aangeroepen wordt als ik nog binnen het DIV element naar de verschillende hyperlinks die erin staan beweeg. Dat is natuurlijk niet de bedoeling.
Nu heb ik het op een omslachtige wijze weten te fixen door:
-de relatieve positie van het DIV element te vinden via een while loop en offsetParent/offsetTop/offfsetLeft
-de huidige grootte van het DIV element op te vragen (offsetHeight/Width)
-de huidige muis positie op te vragen met event.pageX/Y of event.clientX/Y
-checken of de coordinaten binnen de bounding box van het DIV element vallen.
Dit is een heel gedoe bij elkaar, en voor elke grootheid die ik opvraag heb ik weer 3 uitzonderingen zitten voor verschillende browsers. Het werkt wel, maar 'gedoe' werkt altijd incompatibiliteiten in de hand bij javascript.
Het liefst zou ik iets gebruiken zodat "onmouseout" alleen vuurt als ik de DIV container verlaat en NIET als ik naar 1 van de child elementen van deze container navigeer.
Weet iemand hoe ik dit zou kunnen doen?
Voor alle duidelijkheid, de browser waarmee ik test is firefox 1.04 onder Debian/Linux.
Het probleem waar ik mee zit is dat het menu ook weer eens weg moet. Bij het verplaatsen van de muis naar een andere A gaat dit goed (ik zet de vorige DIV's visibility op 'hidden'), maar ik zit een beetje met de situatie waneeer een user zijn muis pointer buiten de pop-up (div) beweegt.
Logisch zou je zeggen dat je dit met "onmouseout" van het betreffende DIV element opvangt, maar ik merk dat die ook aangeroepen wordt als ik nog binnen het DIV element naar de verschillende hyperlinks die erin staan beweeg. Dat is natuurlijk niet de bedoeling.
Nu heb ik het op een omslachtige wijze weten te fixen door:
-de relatieve positie van het DIV element te vinden via een while loop en offsetParent/offsetTop/offfsetLeft
-de huidige grootte van het DIV element op te vragen (offsetHeight/Width)
-de huidige muis positie op te vragen met event.pageX/Y of event.clientX/Y
-checken of de coordinaten binnen de bounding box van het DIV element vallen.
Dit is een heel gedoe bij elkaar, en voor elke grootheid die ik opvraag heb ik weer 3 uitzonderingen zitten voor verschillende browsers. Het werkt wel, maar 'gedoe' werkt altijd incompatibiliteiten in de hand bij javascript.
Het liefst zou ik iets gebruiken zodat "onmouseout" alleen vuurt als ik de DIV container verlaat en NIET als ik naar 1 van de child elementen van deze container navigeer.
Weet iemand hoe ik dit zou kunnen doen?
Voor alle duidelijkheid, de browser waarmee ik test is firefox 1.04 onder Debian/Linux.
[ Voor 5% gewijzigd door Verwijderd op 08-08-2005 17:54 ]