Gå til innhold

Mouse Move i Firefox


Anbefalte innlegg

Hvordan kan jeg få denne koden til å fungere i Firefox (Går i IE og Opera)

 

Meningen er at Testing skal følge musa.

 

Siden dette blir brukt på er her: Side (Du må registrere deg for å sjå ;) )

 

<div id="info" style="position:absolute; top:234px; visibility:hidden;">Testing</div>

 

function mouseMoveHandler (evt) {
 var x = document.all ? event.clientX : document.layers ? evt.x : evt.clientX;
 var y = document.all ? event.clientY : document.layers ? evt.y : evt.clientY;
 window.status = x + ':' + y;
 document.getElementById("info").style.left = x+12;
 document.getElementById("info").style.top = y+12;
}
if (document.layers)
 document.captureEvents(Event.MOUSEMOVE);
if (document.layers || document.all)
 document.onmousemove = mouseMoveHandler;
if (document.addEventListener)
 document.addEventListener('mousemove', mouseMoveHandler, true);

Lenke til kommentar
  • 2 måneder senere...
Videoannonse
Annonse

Uhm er ingen javascript expert, men ser du sjekker på document.all og document.layers. IE og Opera vil triggere på document.all gamle Netscape vil triggere på document.layers men for å triggere for Mozilla burde du sjekke på document.getElementsById..

Vet ikke om det er grunnen men er en mulighet :-)

Lenke til kommentar

Oki kjeda meg litt så fikk en som kan litt mer ta en nærmere titt. Her er hva han fant ut:

 

 

1. the event handler does not branch correctly when getting the mouse position, so it tells Firefox to use a property that it does not support

 

 

2. it fails to take scrolling into account for browsers like IE

 

 

 

3. it does not use units when setting the element position

 

 

4. it repeatedly checks for one thing then assumes another instead of checking for the actual thing it is about to use

 

 

it makes opera add two separate listeners, since it supports both document.all and addEventListener

 

 

 

5. it uses the capture phase in the DOM event listener instead of the buble phase

 

 

Prøv det her :-) :

 

 

 

<script type="text/javascript">

 

 

function mouseMoveHandler (evt) {

 

 

var x = ( typeof(evt.pageX) == 'number' ) ? evt.pageX : ( evt.clientX + (document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft) );

 

 

var y = ( typeof(evt.pageY) == 'number' ) ? evt.pageY : ( evt.clientY + (document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop) );

 

 

window.status = x + ':' + y;

 

 

document.getElementById("info").style.left = (x+12)+'px';

 

 

document.getElementById("info").style.top = (y+12)+'px';

 

 

}

 

 

if( document.layers && document.captureEvents && Event.MOUSEMOVE ) {

 

 

document.captureEvents(Event.MOUSEMOVE);

 

 

}

 

 

if(document.addEventListener) {

 

 

document.addEventListener('mousemove', mouseMoveHandler, false);

 

 

} else if( document.attachEvent ) {

 

 

document.attachEvent('onmousemove', mouseMoveHandler);

 

 

} else {

 

 

document.onmousemove = mouseMoveHandler;

 

 

 

}

 

 

</script>

 

 

<div id="info" style="position:absolute;">Damer</div>

Endret av olafura
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...