原生js獲取鼠標X、Y軸座標

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中獲得





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章