Mouse position in FireFox / NS

S

scot_nery

I got this working in all browsers but FF/NS. It's not picking up the
event to find the mouse position.

In a perfect world, you mouse over the link and a mouse bubble pops up.

Thanks for help.
scot
 
R

Ross Marchant

scot_nery said:

If you copy this one, make sure you put the mouse bubble a bit away from the
mouse location, other wise dragging the mouse from left to right over the
link makes the bubble flash. (Try it). Probably because as you drag the
mouse right it is no longer over the link, but over the mouse bubble
instead, and thus onmouseout is called and the bubble dissapears.

Ross
 
S

Stephen Chalmers

scot_nery said:
I got this working in all browsers but FF/NS. It's not picking up the
event to find the mouse position.

// It's best to monitor mouse co-ordinates with a dedicated handler:

var mouseX, mouseY;

function getMousePos(e)
{
if (!e)
var e = window.event||window.Event;

if('undefined'!=typeof e.pageX)
{
mouseX = e.pageX;
mouseY = e.pageY;
}
else
{
mouseX = e.clientX + document.body.scrollLeft;
mouseY = e.clientY + document.body.scrollTop;
}

}

// You need to tell Mozilla to start listening:

if(window.Event && document.captureEvents)
document.captureEvents(Event.MOUSEMOVE);

// Then assign the mouse handler

document.onmousemove = getMousePos;

// Then your mouseover function can just read mouseX and mouseY directly.
 
G

Gérard Talbot

Stephen Chalmers wrote :
// It's best to monitor mouse co-ordinates with a dedicated handler:

var mouseX, mouseY;

function getMousePos(e)
{
if (!e)
var e = window.event||window.Event;

This manner of coding is not recommendable, IMO. In javascript strict
mode (reporting warnings), Firefox will report that "variable e hides
argument". This manner of coding just makes debugging more difficult.

I recommend
var TheEventObject;
if(e)
{
TheEventObject = e;
}
else if(window.event)
{
TheEventObject = window.event;
}
else
{
TheEventObject = null;
};
if('undefined'!=typeof e.pageX)
{
mouseX = e.pageX;
mouseY = e.pageY;
}
else
{
mouseX = e.clientX + document.body.scrollLeft;

This will work in MSIE 5 but what if the document triggers standards
compliant mode in MSIE 6? In such case, the provided code will not
succeed as the root element is not the same.
As written, the code [indirectly] is not promoting web standards. As
written, the code is more backward-compatible than forward-compatible.
mouseY = e.clientY + document.body.scrollTop;
}

}

// You need to tell Mozilla to start listening:

if(window.Event && document.captureEvents)
document.captureEvents(Event.MOUSEMOVE);

Why not register the listener to the object with DOM 2 Events method?
It's forward-compatible. Future-proof.

Gérard
 
S

Stephen Chalmers

Gérard Talbot said:
Stephen Chalmers wrote :

This manner of coding is not recommendable, IMO. In javascript strict
mode (reporting warnings), Firefox will report that "variable e hides
argument". This manner of coding just makes debugging more difficult.

That level of warning is intended to advise of possible pitfalls, not errors. I know that if I choose conditionally to
overwrite a passed parameter, then I must be aware that any initial value may be lost.
This will work in MSIE 5 but what if the document triggers standards
compliant mode in MSIE 6?

That can happen only if the programmer brings it about, in which case he will know what to expect and amend the code
accordingly. I didn't want to clutter my demonstration with the cascade of questions that must be asked to cover that
contingency.
Why not register the listener to the object with DOM 2 Events method?
It's forward-compatible. Future-proof.

Here I must bow to your clairvoyancy, however I don't seem to know the syntax for making it past-proof, which remains a
concern. On the planet where all users upgrade at the first opportunity, your advice may be of some value, but not where
I reside.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top