当前位置: 首页 > 图文教程 > 网络编程 > Javascript > Javascript在IE或Firefox下获取鼠标位置的代码

Javascript
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
浮动广告js类实现
使用透明叠加法美化文件上传界面的代码
用Div仿showModalDialog模式菜单的效果的代码
JsEasy简介 JsEasy是什么?与下载
网页屏蔽(左右键,代码等)的非JS方法
在IE模态窗口中自由查看HTML源码的方法
点下网页的任意地方,都可到达指定页面的js代码
实例学习Javascript之构建方法、属性
腾讯QQ网页在线客服,隐藏在网页一侧的隐现效果二
腾讯QQ网页在线客服,随网页滚动条上下移动的效果一
可以媲美Flash的JS导航菜单
js实现的XP风格的右键菜单
用JavaScript实现仿Windows关机效果
学习YUI.Ext基础第一天
学习YUI.Ext 第四天--对话框Dialog的使用
Gird组件 Part-3:范例RSSFeed Viewer
可缩放Reloaded-一个针对可缩放元素的复用组件
简单三步,搞掂内存泄漏
pjblog修改技巧汇总

Javascript在IE或Firefox下获取鼠标位置的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 179 ::
收藏到网摘: n/a

由于Firefox和IE等浏览器之间对JS解释的方式不一样,Firefox下面获取鼠标位置不能够直接使用clientX来获取。网上说的一般都是触发mousemove事件才行。我这里有两段代码,思路都一样,就是风格不同。 第一段代码是利用全局变量来获取实时鼠标的位置。
复制代码 代码如下:

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事件,然后获取了事件之后,分别判断浏览器类型。这段代码的优点是,不适用全局变量,并且可以随用随拿,只要调用这个函数,就能够获取鼠标坐标。
这两段代码,个人偏好于后者,现在先把这段代码记下来,这段代码应该是会经常被使用到的。