at this point consider an in-scope memory solution:

var doc = document.documentElement;
doc.onmousemove = (function(prev){
return function(e){
    var current = [e.pageX, e.pageY].join(",");
    if(current !== prev){
        // your stuff here
    };
    prev = current;
};
})("");

If Safari just fires onmousemove twice with the same value after the second
check for (current !== prev) you can redefine the function itself to speedup
its execution for non problematic browsers.

function myMoveEvent(e){};

var doc = document.documentElement;
doc.onmousemove = (function(i,prev){

// temporary event
return function(e){

    // get current position
    var current = [e.pageX, e.pageY].join(",");

    // compare with last position
    if(current !== prev){

        // different position, always true first call
        myMoveEvent(e);

        // if else case has never been reached (0 first call)
        if(1 === i)
            // redefine the event
            doc.onmousemove = myMoveEvent;
        // increase the case
        ++i;
    } else
        --i; // keep i to zero for bugged browsers

    // first two cases or for bugged browsers
    // trace last position
    prev = current;
};
})(0,"");

Being a user interaction related event plus a temporary (hopefully) bug,
with above code you will slightly slow down the event execution just time to
move the mouse in 2 different positions. After that the execution it will be
simple for every browser, not that stressful for Safari 4 which has a fast
JS engine so it will not decrease its performances at all.

Souds good?



On Thu, Aug 6, 2009 at 12:56 PM, stephb...@googlemail.com <
stephb...@googlemail.com> wrote:

>
> > try before you blame my suggestion. You are not introducing anything
> visible to human eyes
>
> > My proposal will avoid that computation, faster interaction, otherwise
> > double computation and more often than each 15 milliseconds.
>
> No, no - I do recognise the benefits of this approach for simple
> interactions, but right now I need to fix what mousemove should do,
> ie. fire every time the mouse moves (only not twice!). I'm doing mouse
> tracking stuff that needs it.
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to