千家信息网

javascript怎么获取指针的位置

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"javascript怎么获取指针的位置",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"javascript怎么获取指针的位置"吧!j
千家信息网最后更新 2026年11月01日javascript怎么获取指针的位置

这篇文章主要讲解了"javascript怎么获取指针的位置",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"javascript怎么获取指针的位置"吧!

javascript获取指针的位置的方法:使用事件对象的pageX和pageY,或者clientX和clientY属性,并且配合scrollLeft和scrollTop属性,这样就可以计算出指针的位置了。

本文操作环境:windows10系统、javascript 1.8.5、thinkpad t480电脑。

要想获取指针在页面中的位置,可以使用事件对象的pageX和pageY,或者是 clientX 和 clientY(兼容 IE)属性,同时还需要配合 scrollLeft 和 scrollTop 属性,这样就可以计算出鼠标指针在页面中的位置了。

//获取鼠标指针的页面位置//参数:e表示当前事件对象//返回值:返回鼠标相对页面的坐标,对象格式(x,y)function getMP (e) {    var e = e || window.event;    return {        x : e.pageX || e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft),        y : e.pageY || e.clientY + (document.documentElement.scrollTop || document.body.scrollTop)    }}

pageX 和 pageY 事件属性不被 IE 浏览器支持,而 clientX 和 clientY 事件属性又不被 Safari 浏览器支持,因此可以混合使用它们以兼容不同浏览器。对于怪异模式来说,body 元素代表页面区域,而 html 元素被隐藏,但是标准模式以 html 元素代表页面区域,而 body 元素仅是一个独立的页面元素,所以需要兼容这两种解析方式。

下面示例演示了如何调用上面扩展函数 getMP() 捕获当前鼠标指针在文档中的位置。

    

演示效果如下:

获取指针的相对位置

使用 offsetX 和 offsetY 或者 layerX 和 layerY 可以获取鼠标指针相对定位包含框的偏移位置。如果使用 offsetLeft 和 offsetTop 属性获取元素在定位包含框中的偏移坐标,然后使用 layerx 属性值减去 offsetLeft 属性值,使用 layery 属性值减去 offsetTop 属性值,即可得到鼠标指针在元素内部的位置。

//获取鼠标指针在元素内的位置//参数:e表示当前事件对象,o表示当前元素//返回值:返回相对坐标对象function getME (e, o) {    var e = e || window.event;    return {        x : e.offsetX || (e.layerX - o.offsetLeft),        y : e.offsetY || (e.layerY - o.offsetTop)    }}

在实践中上面函数存在以下两个问题:

  • Mozilla 类型和 Safari 浏览器以元素边框外壁的左上角为参照点。

  • 其他浏览器则是以元素边框内壁的左上角为坐标原点。

考虑到边框对鼠标位置的影响,当元素边框很宽时,必须考虑如何消除边框对于鼠标位置的影响。但是,由于边框样式不同,它存在 3 像素的默认宽度,为获取元素的边框实际宽度带来了麻烦。需要设置更多的条件,来判断当前元素的边框宽度。

示例

完善后的获取鼠标指针在元素内的位置扩展函数如下:

//完善获取鼠标指针在元素内的位置//参数:e表示当前事件对象,o表示当前元素//返回值:返回鼠标相对元素的坐标位置,其中x表示x轴偏移距离,y表示y轴偏移距离function getME(e, o){    var e = e || window.event;    //获取元素左侧边框的宽度    //调用getStyle()扩展函数获取边框样式值,并尝试转换为数值,如果转换成功,则赋值。    //否则判断是否定义了边框样式,如果定义边框样式,且值不为none,则说明边框宽度为默认值,即为3像素。    //如果没有定义边框样式,且宽度值为auto,则说明边框宽度为0    var bl = parseInt(getStyle(o, "borderLeftWidth")) || ((o.style.borderLeftStyle && o.style.borderLeftStyle != "none" )? 3 : 0);    //获取元素顶部边框的宽度,设计思路与获取左侧边框方法相同    var bt = parseInt(getStyle(o, "borderTopWidth")) || ((o.style.borderTopStyle && o.style.borderTopStyle !="none" ) ? 3 : 0);    var x = e.offsetX || (e.layerX - o.offsetLeft - bl);  // 一般浏览器下鼠标偏移值    //兼容Mozilla类型浏览器,减去边框宽度    var y = e.offsetY || (e.layerY - o.offsetTop - bt); // 一般浏览器下鼠标偏移值    //兼容Mozilla类型浏览器,减去边框宽度    var u = navigator.userAgent; // 获取浏览器的用户数据    if( (u.indexOf("KHTML") > - 1) ||(u.indexOf("Konqueror") > - 1) || (u.indexOf("AppleWebKit") > - 1)    ){ // 如果是Safari浏览器,则减去边框的影响        x -= bl; y -= bt;    } return { // 返回兼容不同浏览器的鼠标位置对象,以元素边框内壁左上角为定位原点        x : x, y : y    }  }

演示效果如下:

感谢各位的阅读,以上就是"javascript怎么获取指针的位置"的内容了,经过本文的学习后,相信大家对javascript怎么获取指针的位置这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

元素 边框 位置 指针 鼠标 浏览器 浏览 属性 宽度 对象 事件 页面 偏移 坐标 样式 函数 不同 参数 左上角 类型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网加科技 博彦科技互联网金融 互联网科技行业发展 互联网巨头反垄断金融科技 麻工互联网科技 互联网金融 金融科技 互联网与新科技 互联网科技的未来发展 互联网教育科技公司vipkid 全球顶尖互联网科技公司 深圳市优智互联网科技有限公司 互联网科技扶贫时间 广州新华互联网科技学校电竞方面 佛山市拉法互联网科技有限公司 互联网时代的科技公司 每天都有哪些好的互联网科技 济南小医互联网科技有限公司招聘 广州三三互联网科技有限公司 互联网领先科技成果宣传视频 互联网科技创新方面的资料 互联网品科技 互联网科技与金融科技 智网互联网科技 互联网教育科技公司vipkid 彤创互联网科技有限公司 消费医药和互联网科技 科技类公司包括互联网吗 伊宁互联网科技做什么的 电子商务与互联网科技的关系 萌小萌互联网科技河南有限公司
0