Results 1 to 2 of 2
May 31, 2007, 12:34 #1
- Join Date
- May 2007
- 0 Post(s)
- 0 Thread(s)
how to stop events from happening
Hello, I'm new here.. and I have a question..
I've been working on a multi-level drop down menu. It is already finished but while making it I encountered a problem that I'd like to find a solution for.
In the code, I clearly seperated the Model, View and Controller parts. The View part basically works with a single redraw-function. It clears the HTML of the complete drop-down menu and redraws it by recreating the needed DIV elements and adding them back to the webpage. The Controller part is a simple state machine that has transitions on onmouseover, onmouseout and onclick events.
In practice, when the mouse was moved over or out of some menuitem, the menu would be redrawn. The redraw function would first remove the complete menu from the HTML dom, and then re-insert the elements of the changed menu. Each of these elements contains a onmouseover and onmouseout argument.
The problem is as follows: in every redraw, when the menu is removed a onmouseout event is triggered, and when the menu is re-created a onmouseover event (in FFox). In IE, for some reason only a onmouseout event is triggered. This made my state machine think that the user actually moved the mouse pointer out of the menu element. Therefore the menu would go bananas and collapse!
The best way to solve this seems to simply ignore all of the user inputs during the redraw funtion for, say, 5 milliseconds during the redraw. However, in pratice, when the user moves the mouse very quickly the state machine 'misses' a mouseout event and the menu doesn't disappear as it should.
My question now is: does anybody know a neat way to prevent these 'ghost' events from happening while rebuilding the page, without interfering with the 'real' events?
Any input is much appreciated..