一,MouseEvent.clientX和MouseEvent.clientY。
clientX和clientY表示的位置是相对浏览器窗口的,而不是对文档的,因此当你在滚动页面之后仍然在窗口中的同一位置上单击时,所得到的坐标的值是相同的。
二,MouseEvent.screenX和MouseEvent.screenY。
screenX和screenY分别表示事件发生位置相对于客户端所在屏幕的水平和垂直坐标。
三,相对于文档的坐标必须重新计算。
function getPostionInDocument(W3CEvent)
{
W3CEvent = W3CEvent || window.event;
//通过能力检测的方法进行判断,对safari,该位置信息存放到
//事件的pageX和pageY属性中,对其他的情况是滚动的位置
//+当前位置对浏览器窗口,而其中滚动的位置IE是存放到
//document.body.scrollLeft和document.body.scroollTop属性上,
//W3C则是使用document.documentElement.scrollTop和
//document.documenElement.scrollLeft。
return {
x : W3CEvent.pageX || (W3CEvent.clientX +
(document.documentElement.scrollLeft
|| document.body.scrollLeft)) ,
y: W3CEvent.pageY || (W3CEvent.clientY +
(document.documentElement.scrollTop
|| document.body.scrollTop))
};
}