2012-06-28 30 views
5

Tôi đang phát triển một trang web nơi tôi đã đặt hình ảnh ở chế độ động <div>. Nó hoạt động trong Firefox nhưng nó không thành công trong IE.Làm thế nào để có được vị trí con trỏ chuột bằng cách sử dụng javascript cho internet explorer?

Câu hỏi đặt ra là: cách lấy vị trí con trỏ chuột trong IE? Tôi đang sử dụng mã sau để nhận vị trí con trỏ chuột

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

Nó hoạt động tốt với Firefox.

+4

này có *** gì *** để làm với Java. Tôi sẽ xóa thẻ 'java' cho bạn, nhưng có một bản chỉnh sửa đang chờ xử lý. –

+0

Hãy thử http://expsharing.blogspot.in/2008/08/following-javascript-help-we-get.html – Imdad

Trả lời

0

Sử dụng: clientX và clientY

Giống như mã này:

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

Tôi đã thử cách này nhưng nó không hoạt động. –

+0

bạn gặp lỗi hay gì đó? – roev

8

Hãy thử điều này, này nên làm việc trên tất cả các trình duyệt bao gồm IE.

<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

Tại sao lại sử dụng toán tử ternary để phát hiện document.all? tại sao không sử dụng !! document.all? –

4

tôi giải quyết vấn đề này với mã này

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

Tại sao bạn không thay đổi IE var thành notIE vì câu lệnh if (IE) sẽ chạy trên mọi thứ EXCEPT IE. –

Các vấn đề liên quan