首先:算法
先對比一下pagexX,clientX,screenX,offsetX幾個的區別瀏覽器
pageX/pageY:鼠標相對於整個頁面的X/Y座標 整個頁面:整個網頁的所有,好比當網頁很寬很長,寬2000px,高3000px, pageX/pageY的最大值就是他們。 ClientX/clientY :事件發生時鼠標瀏覽器內容區域的X/Y座標 screenX/screenY:鼠標在屏幕上的座標 offsetX/offsetY: 只有IE支持,至關於IE下的pageX,pageY
所能獲得下面這種算法:
e.clientX+document.documentElement.scrollLeft- document.documentElement.clientLeft =e.pageX
e.clientY+document.documentElement.scrollTop-document.documentElement.clientTop = e.pageYcode
想要忽略滾動因素,獲取相對於文檔(body)的座標時,
Firefox下支持pageX與pageY屬性,這兩個屬性已經把滾動計算在內了。
Chrome下能夠經過document.body.scrollLeft,document.body.scrollTop計算出頁面滾動位移,
IE下經過document.documentElement.scrollLeft,document.documentElement.scrollTop
因此綜合Code以下:事件
function getMousePos(event){ var e = event || window.event; var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollY = document.documentElement.scrollTop || document.body.scrollTop; var x = e.pageX || e.clientX + scrollX; var y = e.pageY || e.clientY + scrollY; return { 'x':x,'y':y }; } var mousePos = getMousePos(event); console.log(mousePos.x,mousePos.y);