第一段代码是利用全局变量来获取实时鼠标的位置。
复制代码 代码如下:
var xpos;
var ypos;
window.document.onmousemove(function(evt){
evt=evt || window.event;
if(evt.pagex){
xpos=evt.pagex;
ypos=evt.pagey;
} else {
xpos=evt.clientx+document.body.scrollleft-document.body.clientleft;
ypos=evt.clienty+document.body.scrolltop-document.body.clienttop;
}
});
因为ie和firefox对clientx的解析不一样,ie认为clientx是鼠标相对整个页面左上角的位置,而firefox认为是相对当前所见页面左上角的位置。而这段代码最终返回的结果是整个页面左上角的位置。这段代码的缺陷是,xpos和ypos是实时变动的。
第二段代码是通过函数获取当前时刻的鼠标坐标值
复制代码 代码如下:
document.onmousemove = mousemove;
function mousemove(ev){
ev = ev || window.event;
var mousepos = mousecoords(ev);
}
function mousecoords(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
};
}
这段代码的来源是这里,这个网站还提供了一些简单的样例给我们玩耍。这个函数和刚才的函数理论是一致的,先触发mousemove事件,然后获取了事件之后,分别判断浏览器类型。这段代码的优点是,不适用全局变量,并且可以随用随拿,只要调用这个函数,就能够获取鼠标坐标。
这两段代码,个人偏好于后者,现在先把这段代码记下来,这段代码应该是会经常被使用到的。