获取鼠标位置,就是获取event对象的坐标属性,先看看如何获取event对象。在W3C的模型中,把参数传递的第一个参数当作当前的event对象,在MSIE的模型中,总是window.event。
function myfunc(e) { var e = e || window.event;//如果e不存在,则获取window.event }
event对象的坐标属性pageX, pageY分别是当前鼠标相对body的X, Y的坐标值,但是在IE中没有pageX和pageY,不过可以通过clientX, clientY加上scrollTop, scrollLeft的值来确定当前鼠标的位置。clientX, clientY是当前鼠标相对window的坐标值。代码:
function mouseCoords(e){ if(e.pageX || e.pageY){//标准浏览器返回当前鼠标坐标值 return {x:e.pageX, y:e.pageY}; } else if(e.clientX || e.clientY) {//仅IE返回回当前鼠标坐标值 return { x:(e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft), y:(e.clientY + document.documentElement.scrollTop + document.body.scrollTop) } } } function mouseMove(e){ e = e || window.event; var mousePos = mouseCoords(e);//这里mousePos.x, mousePos.y分别为鼠标的X, Y坐标值 }
以上代码中发现一个兼容性问题,如果文档声明为XHTML,document.body.scrollTop的值始终为0,所以在XHTML文档声明的时候,只能用document.documentElement.scrollTop。
No comments:
Post a Comment