码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-05-30 10:14:45      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

示例一: 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 中,我们也把这些加进去。
 
 

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

标签:

原文地址:http://www.cnblogs.com/mawenying/p/5541374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!