e.pageX;event.clientX,event.clientY,scrollLeft,clientLeft获取鼠标位置

示例一: x方向没有滚动

var mx=0,my=0;
function mouseMove(ev){Ev=ev||window.event;var mousePos=mouseCoords(Ev);mx=mousePos.x;my=mousePos.y;}
function mouseCoords(ev){
  if(ev.pageX||ev.pageY){
    return{x:ev.pageX,y:ev.pageY};
  }
  return{x:ev.clientX,y:ev.clientY+$(document).scrollTop()};
}

 示例二:x方向有滚动:

function mousePosition(ev){//返回一个类
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
}
}
function mouseMove(ev){
ev = ev || window.event;
var mousePos = mousePosition(ev);//mousePos现在为一个类
document.getElementById('txt').value=mousePos.x+":"+mousePos.y
}
document.onmousemove = mouseMove

 

 

注:因为我们要在 MSIE 和其他浏览器下运行, Firefox 和其他浏览器用  event.pageX 和 event.pageY 来表示鼠标 相对于文档的位置 ,如果你有一个 500*500 的窗口并且你的鼠标在绝对中间,那么 pageX 和 pageY  的值都是 250,如果你向下滚动  500, 那么 pageY 将变成 750。
MSIE 正好相反,IE8及更早版本不支持event.pageX和event.pageY,不过使用客户区坐标和滚动信息可以计算出来。它使用 event.clientX 和 event.clientY 表示鼠标相当于窗口的位置,而不是文档。在同样的例子中,如果你向下滚动500,clientY 依然是 250,因此,我们需要添加 scrollLeft 和 scrollTop 这两个相对于文档的属性。最后,MSIE 中文档并不是从 0,0 开始,而是通常有一个小的边框(通常是 2 象素),边框的大小定义在  document.body.clientLeft 和 clientTop 中,我们也把这些加进去。
 
 

转载于:https://www.cnblogs.com/mawenying/p/5541374.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值