基于JavaScript实现 获取鼠标点击位置坐标的方法


Posted in Javascript onApril 12, 2013

在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊声明代码在IE8,FireFox,Chrome下进行测试兼容

鼠标点击位置坐标

相对于屏幕

如果是涉及到鼠标点击确定位置相对比较简单,获取到鼠标点击事件后,事件screenX,screenY获取的是点击位置相对于屏幕的左边距与上边距,不考虑iframe因素,不同浏览器下表现的还算一致。

function getMousePos(event) {
            var e = event || window.event;
            return {'x':e.screenX,'y':screenY}
        }

相对浏览器窗口

简单代码即可实现,然而这是还不够,因为绝大多数情况下我们希望获取鼠标点击位置相对于浏览器窗口的坐标,event的clientX,clientY属性分别表示鼠标点击位置相对于文档的左边距,上边距。于是类似的我们写出了这样的代码
function getMousePos(event) {
            var e = event || window.event;
            return {'x':e.clientX,'y':clientY}
        }

相对文档

简单测试也没什么问题,但是clientX与clientY获取的是相对于当前屏幕的坐标,忽略页面滚动因素,这在很多条件下很有用,但当我们需要考虑页面滚动,也就是相对于文档(body元素)的坐标时怎么办呢?加上滚动的位移就可以了,下边我们试试怎么计算页面滚动的位移。
其实在Firefox下问题会简单很多,因为Firefox支持属性pageX,与pageY属性,这两个属性已经把页面滚动计算在内了。
在Chrome可以通过document.body.scrollLeft,document.body.scrollTop计算出页面滚动位移,而在IE下可以通过document.documentElement.scrollLeft ,document.documentElement.scrollTop
function getMousePos(event) {
            var e = event || window.event;
            var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
            var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
            var x = e.pageX || e.clientX + scrollX;
            var y = e.pageY || e.clientY + scrollY;
            //alert('x: ' + x + '\ny: ' + y);
            return { 'x': x, 'y': y };
        }

Javascript 相关文章推荐
有效的捕获JavaScript焦点的方法小结
Oct 08 Javascript
js对象关系图 方便dom操作
Mar 18 Javascript
实例讲解JQuery中this和$(this)区别
Dec 08 Javascript
jQuery中parents()方法用法实例
Jan 07 Javascript
简要了解jQuery移动web开发的响应式布局设计
Dec 04 Javascript
js+html5实现canvas绘制网页时钟的方法
May 21 Javascript
详解webpack的配置文件entry与output
Aug 21 Javascript
Mint UI 基于 Vue.js 移动端组件库
Nov 07 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
Jun 04 Javascript
vue中watch和computed的区别与使用方法
Aug 23 Javascript
vue实现标签云效果的示例
Nov 09 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
Apr 12 #Javascript
深入理解JavaScript 闭包究竟是什么
Apr 12 #Javascript
关于JavaScript中string 的replace
Apr 12 #Javascript
关于JavaScript与HTML的交互事件
Apr 12 #Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
Apr 12 #Javascript
js实现单一html页面两套css切换代码
Apr 11 #Javascript
获取内联和链接中的样式(js代码)
Apr 11 #Javascript
You might like
用Zend Encode编写开发PHP程序
2006/10/09 PHP
.htaccess文件保护实例讲解
2011/02/06 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
Python中的Numpy矩阵操作
2018/08/12 Python
详解python运行三种方式
2019/05/13 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
python开发入门——列表生成式
2020/09/03 Python
ORACLE第二个十问
2013/12/14 面试题
乡镇网格化管理实施方案
2014/03/23 职场文书
职务聘任书范文
2014/03/29 职场文书
妇女干部培训方案
2014/05/12 职场文书
青年志愿者活动方案
2014/08/17 职场文书
springboot读取resources下文件的方式详解
2022/06/21 Java/Android