<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.26.3">
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#ffffff">
On Tue, 2010-09-14 at 07:51 -0400, Jim Williams wrote:<BR>
<BLOCKQUOTE TYPE=CITE>
    Currently, there appears to be no way of sensing the location of the mouse cursor without waiting for user-initiated events.  The problem is that there is no way to fill in the real current values for many of the parameters when executing the following, without copying needed information from a user-initiated mouse event such as mousemove, for example:<BR>
    <BLOCKQUOTE>
        <I><TT>event</TT></I><TT>.initMouseEvent(</TT><TT><I>type</I></TT><TT>, </TT><TT><I>canBubble</I></TT><TT>, </TT><TT><I>cancelable</I></TT><TT>, </TT><TT><I>view</I></TT><TT>, </TT><BR>
        <I><TT>    detail</TT></I><TT>, </TT><TT><I>screenX</I></TT><TT>, </TT><TT><I>screenY</I></TT><TT>, </TT><TT><I>clientX</I></TT><TT>, </TT><TT><I>clientY</I></TT><TT>, </TT><BR>
        <I><TT>    ctrlKey</TT></I><TT>, </TT><TT><I>altKey</I></TT><TT>, </TT><TT><I>shiftKey</I></TT><TT>, </TT><TT><I>metaKey</I></TT><TT>, </TT><BR>
        <I><TT>    button</TT></I><TT>, </TT><TT><I>relatedTarget</I></TT><TT>);</TT> <BR>
    </BLOCKQUOTE>
    This problem is one of the things that made implementation of the mousepoint event difficult [cf. <A HREF="http://pagenotes.com/mousepoint/mousepointEvent.htm">http://pagenotes.com/mousepoint/mousepointEvent.htm</A>]. <BR>
    <BR>
    <B>Suggested Enhancement</B><BR>
    <BR>
    One way of addressing this problem is to allow omitted arguments that are correctly filled in by the implementation.  That is to say, allow <BR>
    <BLOCKQUOTE>
        <I><TT>event</TT></I><TT>.initMouseEvent(</TT><TT><I>type</I></TT><TT>, </TT><TT><I>canBubble</I></TT><TT>, </TT><TT><I>cancelable</I></TT><TT>,</TT><TT><I> view</I></TT><TT>, </TT><TT><I>relatedTarget</I></TT><TT>),</TT> <BR>
    </BLOCKQUOTE>
    where the omitted arguments reflect the mouse's current state, e.g., <I><TT>screenX</TT></I><TT> </TT>is the mouse's current <I><TT>screenX</TT></I><TT> </TT>coordinate.<BR>
    <BR>
    Another possibility is to enhance  <TT>initEvent </TT>so that, in the case of mouse events, <TT>initEvent</TT>fills in correct values for those parameters that would otherwise be set by <TT>initMouseEvent</TT>.  In order for this approach to be fully effective, it would be necessary to allow an optional fourth argument for the <I><TT>relatedTarget</TT></I>parameter, in other words, allow any user defined event to supply a related target, if appropriate:
<PRE>
<I>event</I>.initEvent(<I>type</I>, <I>bubbles</I>, <I>cancelable</I>, <I>relatedTarget</I>); 
</PRE>
    In the case of a mouse event, this would be equivalent to <BR>
    <BLOCKQUOTE>
        <I><TT>event</TT></I><TT>.initMouseEvent(</TT><TT><I>type</I></TT><TT>, </TT><TT><I>canBubble</I></TT><TT>, </TT><TT><I>cancelable</I></TT><TT>, </TT><TT><I>view</I></TT><TT>, </TT><BR>
        <I><TT>    detail</TT></I><TT>, </TT><TT><I>screenX</I></TT><TT>, </TT><TT><I>screenY</I></TT><TT>, </TT><TT><I>clientX</I></TT><TT>, </TT><TT><I>clientY</I></TT><TT>, </TT><BR>
        <I><TT>    ctrlKey</TT></I><TT>, </TT><TT><I>altKey</I></TT><TT>, </TT><TT><I>shiftKey</I></TT><TT>, </TT><TT><I>metaKey</I></TT><TT>, </TT><BR>
        <I><TT>    button</TT></I><TT>, </TT><TT><I>relatedTarget</I></TT><TT>);</TT> <BR>
    </BLOCKQUOTE>
    where the additional arguments have their actual current values.<BR>
    <BR>
    On the one hand, I realize it's a bit late in the game for this sort of suggestion, but on the other, this note does point out a weakness of the event interface that could easily be removed.<BR>
    <BR>
    Jim Williams<BR>
</BLOCKQUOTE>
<BR>
I'm not entirely sure that this is possible. As far as I know (and I could be very wrong) the events start with the OS and work their way down the system to eventually reach the Javascript through a user agent, so if the mouse has moved off of the user agent (browser) then it may not be possible to access the current coordinates. The browser would only be aware of the coordinates that it was last passed by the OS, i.e. only those in it's own window space. A browser could offer up the last known coordinates, but if the cursor is beyond the region of a browser window for example, then the browser would be passing across the wrong values. This might not matter for most cases, but then again, I can't foresee much use for having the coordinates of a cursor that triggered no event. The only time a user agent might be aware of the correct coordinates and no event would be triggered would be where the cursor was over part of the user agent that wasn't the web page, like the menubar, etc.<BR>
<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
Thanks,<BR>
Ash<BR>
<A HREF="http://www.ashleysheridan.co.uk">http://www.ashleysheridan.co.uk</A><BR>
<BR>
<BR>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>