SitePoint Sponsor

User Tag List

Results 1 to 2 of 2
  1. #1
    SitePoint Enthusiast
    Join Date
    May 2007
    Posts
    33
    Mentioned
    0 Post(s)
    Tagged
    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..
    Bas

  2. #2
    SitePoint Evangelist hexburner's Avatar
    Join Date
    Jan 2007
    Location
    Belgium
    Posts
    591
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    If you don't move your mouse when you add a new element that has a onmouseover event under the cursor, the onmouseover event will not be fired in IE. I'm not sure about FF.

    A little more information would be helpfull though. A live demo somewhere for example would be nice.
    FOR SALE: 1 set of morals, never used, will sell cheap


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •