From: Jordi 'I. M. <jmi...@or...> - 2001-01-11 16:18:55
|
I think I'm almost there this time. The fix I posted on CVS was OK, but was not enought. It seems that adding a listener before the layer is added to the document causes mouseover events to get lost. Click events work, though. Weird as usual Jordi 'IlMaestro' Ministral wrote: > I'm discovering lots of things about the event model now that we have the precreation code. I don't really > know if it has always been the same but I never realized. > > If you could just have a little patience I think I can beat it. > > Jordi 'IlMaestro' Ministral wrote: > > > I'm missing events... did I screw something ? First I thought but then going back to the latest code ( > > before my modifications ) I am missing those same events. Ohh please just a little luck from time to > > time !!!!! > > > > In NS you can apply the same "for (each image in doc) img.lyrobj = myself" event trick to the links > > array. > > > > Jordi 'IlMaestro' Ministral wrote: > > > > > I have updated CVS with a new events.js that should fix IEs event problems. All the example files > > > worked fine. This is what happened ( at least this is something I found, maybe there are still > > > other issues ): > > > > > > - All browser events in DynAPI are captured and passed to the same EventMethod. This eventMethod > > > identifyes the physical layer, cancels browser event, searches for the appropiate DynmLayer object > > > and invokes its event. > > > > > > - In IE, in order to access the DynLayer object we use the lyrobj property of the DIV itself. This > > > property is set when creating a layer so from code executed within the DIV's scope we can still get > > > to our DynLayer obj. The problem with our contents was that when clicking on a text, most of the > > > times the srcElement of the event was not the DIV but a FONT, TD, TR, TABLE, UL,... element. That > > > element did not have a pointer to the dynlayer and thus the API could not route the event properly. > > > > > > - This issue was partially solved for images by doing: > > > > > > if (is.ie) for (i in dlyr.elm.all.tags("img")) dlyr.elm.all.tags("img")[i].lyrobj=dlyr; > > > > > > So images had a pointer to the layer aswell. This we would have needed to do to all elements in our > > > content, somethig really painful. Instead, I added this line inside eventmethod. > > > > > > for(;is.ie && !realsrc.lyrobj && realsrc.parentElement && > > > realsrc.parentElement!=realsrc;realsrc=realsrc.parentElement); > > > > > > Which actually makes realsrc travel IE's object hierarchy until we find the lyrobj reference. By > > > doing so I fixed events in IE5 and 5.5. I'm not that sure everything is fine now, but it is an > > > improvement. > > > > > > There are several lines in that method such as that > > > > > > if (e.type=="mouseover" || e.type=="mouseout") return false; > > > > > > just before the bubbleEvent() call that I don't understand but I prefer not to touch them. > > > > > > By the way, it seems that when clicking on a selectable text, NS does not fire a click event. > > > Mousedown and mouseup are fired, but click isn't. We could fire it manually but then when clicking > > > outside a text we would get two onclicks. > > > > > > Tell me if I broke something. Sure I did. > > > > > > Cya > > > > > > _______________________________________________ > > > Dynapi-Dev mailing list > > > Dyn...@li... > > > http://lists.sourceforge.net/mailman/listinfo/dynapi-dev > > > > _______________________________________________ > > Dynapi-Dev mailing list > > Dyn...@li... > > http://lists.sourceforge.net/mailman/listinfo/dynapi-dev > > _______________________________________________ > Dynapi-Dev mailing list > Dyn...@li... > http://lists.sourceforge.net/mailman/listinfo/dynapi-dev |