function mousePosition(evt){
evt = evt || window.event;
//Mozilla
if(evt.pageX || evt.pageY){
return { x : evt.pageX,y : evt.pageY}
}
//IE
return {
x : evt.clientX + document.body.scrollLeft - document.body.clientLeft,
y : evt.clientY + document.body.scrollTop - document.body.clientTop
}
}
//獲取X軸座標
function getX(evt){
evt = evt || window.event;
return mousePosition(evt).x;
}
//獲取Y軸座標
function getY(evt){
evt = evt || window.event;
return mousePosition(evt).y;
}
//外部函數調用1
document.getElementById("x").onclick = function(evt){
alert(getX(evt))
}
//外部函數調用2
function showXY(evt){
evt = evt || window.event;
document.getElementById("n").innerHTML = ""+getX(evt);
}
window.onload = function(){
document.body.onmousemove = showXY;
}
1.在IE中,event對象是全局的,它被存儲在window.event中,對於Firefox,及其他的瀏覽器來說,這個事件將被傳遞到任何指向這個頁面動作的函數中。可以通過傳遞參數獲取。2.document.body.scrollTop是網頁被捲去的高,具有 DTD 時用 document.documentElement.scrollTop 代替 document.body.scrollTop ,否則取不到值。
3.Firefox和其他的瀏覽器使用event.pageX和event.pageY來表示鼠標相對於document文檔的位置。如果你有一個500*500的窗口,並且鼠標位於窗口中間,那麼pageX和pageY的值將都是250。如果你將窗口向下滾動500象素,pageY的值爲750。 如此相反的是,微軟的IE使用event.clientX和event.clientY來表示鼠標相對於window窗口的位置,而不是當前document文檔。在相同的例子中,如果將鼠標放置於500*500窗口的中間,clientX和clientY值將均爲250。如果向下滾動頁面,clientY將仍爲250,因爲它是相對於window窗口來測量,而不是當前的document文檔。因此,在鼠標位置中,我們應該引入document文檔body區域的scrollLeft和scrollTop屬性。最後,IE中document文檔實際並不在(0,0)的位置,在它周圍有一個小(通常有2px)邊框,document.body.clientLeft和document.body.clientTop包含了這個邊框的寬度。所有用evt.clientX + document.body.scrollLeft - document.body.clientLeft //在IE中獲得