472,142 Members | 1,275 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,142 software developers and data experts.

Mouse position in FireFox / NS

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

Aug 8 '05 #1
6 29951
"scot_nery" <sc**@juggle.com> wrote in message
news:11**********************@g49g2000cwa.googlegr oups.com...
Crap... http://dev.juggle.com/bubbletest.html
there.


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
Aug 8 '05 #3

scot_nery <sc**@juggle.com> wrote in message news:11**********************@g44g2000cwa.googlegr oups.com...
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.

--
Stephen Chalmers http://makeashorterlink.com/?H3E82245A

Aug 8 '05 #4
It's a success story. Thanks tons for the help. Can't we all just get
along, my fellow browsers?

http://dev.juggle.com/bubbletest.html

Aug 9 '05 #5
Stephen Chalmers wrote :
scot_nery <sc**@juggle.com> wrote in message news:11**********************@g44g2000cwa.googlegr oups.com...
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;


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
--
remove blah to email me
Aug 12 '05 #6
Gérard Talbot <ne***********@gtalbot.org> wrote in message news:3m*************@uni-berlin.de...
Stephen Chalmers wrote :
scot_nery <sc**@juggle.com> wrote in message news:11**********************@g44g2000cwa.googlegr oups.com...

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.


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.
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?


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.

// 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.


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.

--
Stephen Chalmers
547265617375726520627572696564206174204F2E532E2072 65663A205451323437393134

Aug 13 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Smiley | last post: by
4 posts views Thread by Jay | last post: by
19 posts views Thread by wmanzo | last post: by
10 posts views Thread by Glich | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.