2012-06-28 16 views
5

ben dinamik bir <div> bir görüntü ayarlamış bir web sayfası geliştiriyorum. Bu Firefox'ta çalışıyor ama IE'de başarısız olur.nasıl internet explorer için javascript kullanarak fare işaretçisi pozisyon almak için?

soru şudur: Nasıl IE fare işaretçisi konumunu alınır? Ben fare işaretçisi pozisyonunu almak için aşağıdaki kodu kullanıyorum

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); 
} 

O Firefox ile çalışıyor.

+4

ile bu sorunu çözmüş bakın Bu *** Java ile ilgisi *** ilgisi yoktur. "Java" etiketini sizin için kaldırırdım, ancak yolda bekleyen bir düzenleme var. –

+0

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

cevap

0

Kullanım: clientX ve clientY

bu kodu gibi

:

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

Bu çalıştı ama işe deneyin. –

+0

Hata mı alıyorsunuz? – roev

8

bu deneyin, bu IE dahil tüm tarayıcılarda çalışması gerekir.

<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

Neden document.all tespit etmek için üçlü operatörü kullanılır? neden kullanmayın !! document.all? –

6

jQuery'yi kullanın ve event.pageX ve event.pageY kullanın!

+0

Harika, sizin için +1 :) – Eliyah

4

http://api.jquery.com/event.pageY/ ben bu kodu

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

IE (IE) ifadesinin IE dışında her şeyde çalışıp çalışmadığı gibi IE varyasyonunu neden kullanmıyorsunuz? –

İlgili konular