Link to home
Start Free TrialLog in
Avatar of jonpers
jonpers

asked on

MouseOut event not always registering in Netscape

Hi,

I have a number of <LAYERS> on a page, each has an onMouseOut event. However, if the mouse is moved quickly over a layer, it's onMouseOut event is not called. Is there a fix for this?

Thanks.
Avatar of bruno
bruno
Flag of United States of America image

don't move your mouse so fast.

:-)
Post a link or the code please.

Cd&
It could also be dependant on the speed of the computer.  If the mouse is moving over between cycles then it may not have time to register the event.

Also are therer any other events happening?  Like setTimeout events.
Avatar of DreamMaster
DreamMaster

First a piece of advice...

onmouseover and onmouseout events are only working in IE (for layers)

Now to your problem....

There is no real fix for your problem, one thing is to make the layer a bit wider so you will for sure be over the layer...(but this could create problems with links of other layers that could fall underneath that layer...)

The problem is when you go over the layer really quickly....the place of the mouse is only calculated at certain time intervals, this is defined by your computers speed, there is no way for you to change it...it can happen that you moved sooo fast, that it doesn't detect the move properly.....

Max.
And of course the biggest problem you have is that you post a question and then ignore the responses that ask for more information.

Cd&
>>There is no real fix for your problem


I'm sticking with my original answer....don't move the mouse so fast.

:-)

BRUNO
Avatar of jonpers

ASKER

I've made some progress - I think I know why it's happening but I'm having problems fixing it:

OnMouseOver in layer1 displays a layer(layer2) on top of layer1.
OnMouseOut in layer2 hides layer2.

The problem (I think) is that if you move the mouse fast over layer1 the onMouseOver event triggers, but layer2 has not been displayed by the time the mouse has exited.

JP.

P.S. COBOLdinosaur - I think you're being a bit premature with your criticism. I happened to be away from my desk for one afternoon and you're giving me grief! The reason I haven't put a code sample up is that the code I have is a lot more involved than what I've explained above and I didn't want to complicate matters.
Avatar of jonpers

ASKER

Here's a sample I put together to illustrate the problem. BTW, the problem occurs in IE using DIVs too.


<HTML>
<HEAD>
<script language="JavaScript">
function show(){
document.layers['lyr2'].visibility='show';
}
function hide(){
document.layers['lyr2'].visibility='hide';
}
</script>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">
<layer id="lyr1" visibility="show" z-index="1" bgcolor="blue" top="100" left="100" width="200" height="20" onmouseover="show();">Move mouse quickly</layer>
<layer id="lyr2" visibility="hide" z-index="2" bgcolor="red" top="100" left="100" width="200" height="20" onmouseout="hide();">Move mouse quickly</layer>
</BODY>
</HTML>

jonpers > There is first of all no need for the z-index property there....

By the way it is never wise to place two layers exactly on top of each other and then using the onmouseout even of the one on top of the other....

Especially in this case....

Since you have the onmouseover displaying the layer on top of it....the layer on top of it will never know you are actually (at that time) over him and will therefor not execute any events....

Can I ask why you want them to be exactly over each other?

Max.
Avatar of jonpers

ASKER

They're on top of each other because I can't change text color in a layer dynamically, like I can with a div.
ASKER CERTIFIED SOLUTION
Avatar of DreamMaster
DreamMaster

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of jonpers

ASKER

Thanks for the advice Max. I actually got the problem fixed quite simply - I put the two layers into a parent layer and triggered both onMouseOver and onMouseOut from the parent layer.

By the way, I was a little confused by your comment earlier when you said that onMouseOver and onMouseOut only work in layers for IE. It's the complete opposite!

JP
Ok....at that time I didn't know you used the layer tag....(I always refer to DIV's as layers) I never use the layer tag since the DIV tag works for both and I program around Netscape's shortcomings....in Netscape you cannot use onmouseover or onmouseout on DIV's...

Cheers,
Max.