2012-06-28 8 views
5

Sto sviluppando una pagina Web in cui ho impostato un'immagine in un in modo dinamico. Funziona in Firefox ma fallisce in IE.Come ottenere la posizione del puntatore del mouse usando javascript per internet explorer?

La domanda è: come ottenere la posizione del puntatore del mouse in IE? Sto usando il seguente codice per ottenere la posizione puntatore del mouse

function getCursorXY(e) { 
    CurX = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); 
    CurY = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); 
} 

Funziona con Firefox.

+4

Questo non ha nulla *** *** a che fare con Java. Rimuoverei il tag 'java' per te, ma c'è una modifica in sospeso nel modo. –

+0

Prova questo http://expsharing.blogspot.in/2008/08/following-javascript-help-we-get.html – Imdad

risposta

0

Uso: clientX e clientY

come questo codice:

var posx = 0; 
var posy = 0; 
if (e.pageX || e.pageY)  { 
    posx = e.pageX; 
    posy = e.pageY; 
} 
else if (e.clientX || e.clientY) { 
    posx = e.clientX + document.body.scrollLeft 
     + document.documentElement.scrollLeft; 
    posy = e.clientY + document.body.scrollTop 
     + document.documentElement.scrollTop; 
} 
+0

Ho provato questo ma non funziona. –

+0

ottieni un errore o qualcosa del genere? – roev

8

Prova questa, Questo dovrebbe funzionare su tutti i browser, tra cui Internet Explorer.

<html> 
<body> 
<form name="Show"> 
<input type="text" name="MouseX" value="0" size="4"> X<br> 
<input type="text" name="MouseY" value="0" size="4"> Y<br> 
</form> 

<script language="JavaScript1.2"> 
<!-- 

// Detect if the browser is IE or not. 
// If it is not IE, we assume that the browser is NS. 
var IE = document.all?true:false 

// If NS -- that is, !IE -- then set up for mouse capture 
if (!IE) document.captureEvents(Event.MOUSEMOVE) 

// Set-up to use getMouseXY function onMouseMove 
document.onmousemove = getMouseXY; 

// Temporary variables to hold mouse x-y pos.s 
var tempX = 0 
var tempY = 0 

// Main function to retrieve mouse x-y pos.s 

function getMouseXY(e) { 
    if (IE) { // grab the x-y pos.s if browser is IE 
    tempX = event.clientX + document.body.scrollLeft 
    tempY = event.clientY + document.body.scrollTop 
    } else { // grab the x-y pos.s if browser is NS 
    tempX = e.pageX 
    tempY = e.pageY 
    } 
    // catch possible negative values in NS4 
    if (tempX < 0){tempX = 0} 
    if (tempY < 0){tempY = 0} 
    // show the position values in the form named Show 
    // in the text fields named MouseX and MouseY 
    document.Show.MouseX.value = tempX 
    document.Show.MouseY.value = tempY 
    return true 
} 

//--> 
</script> 
</body> 
</html> 
+0

Perché utilizzare l'operatore ternario per rilevare document.all? perché non usare !! document.all? –

4

ho risolto questo problema con questo codice

var CurX; 
    var CurY; 
    var IE = document.all?true:false; 
    if(IE){ 
     CurX = window.event.clientX; 
     CurY = window.event.clientY; 
    } 
    else{ 
     if (window.captureEvents) { 
     document.captureEvents(Event.MOUSEMOVE); 
    } 
    document.onmousemove = getCursorXY; 
} 

function getCursorXY(e) { 
    CurX = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); 
    CurY = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); 
} 
+0

Perché non cambi l'IE var in notIE poiché l'istruzione if (IE) verrà eseguita su tutto eccetto IE. –

Problemi correlati