在与鼠标相关的事件中事件对象 e 的一些属性代表:
- clientX/Y
- 鼠标位置相对于当前可视区域的坐标(不包括滚动条的距离)
- layerX/Y
- 同 pageX/Y 相同
- IE11 以下同 clientX/Y
- screenX/Y
- 鼠标位置相对于屏幕的坐标
- x/y
- 同 clientX/Y 相当
- FireFox 不支持
- pageX/Y
- 鼠标位置相对于当前文档的坐标(包含滚动条的距离)
- IE9 以下不支持
- offsetX/Y
- 鼠标位置相对于块元素的坐标(包含边框)
- Safari 不包括边框
pageX/Y 兼容方法
解决 < IE9 不支持
function pagePos(e){
var sLeft = getScrollOffset().left,
sTop = getScrollOffset().top,
cLeft = document.documentElement.clientLeft || 0, //左边框宽
cTop = document.documentElement.clientTop || 0; //上边框宽
return {
X: e.clientX + sLeft - cLeft,
Y: e.clientY + sTop - cTop,
}
}