基于JavaScript获取鼠标位置的各种方法


Posted in Javascript onDecember 16, 2015

在一些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 相关文章推荐
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
Feb 09 Javascript
jQuery UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
js动态切换图片的方法
Jan 20 Javascript
JavaScript中的立即执行函数表达式介绍
Mar 15 Javascript
JavaScript中关联原型链属性特性
Feb 13 Javascript
微信小程序 倒计时组件实现代码
Oct 24 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
Jun 13 Javascript
webpack中使用iconfont字体图标的方法
Feb 22 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
使用vue-router为每个路由配置各自的title
Jul 30 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
vueScroll实现移动端下拉刷新、上拉加载
Mar 22 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 #Javascript
javascript数组克隆简单实现方法
Dec 16 #Javascript
Perl Substr()函数及函数的应用
Dec 16 #Javascript
javascript针对不确定函数的执行方法
Dec 16 #Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
Dec 16 #Javascript
js如何判断输入字符串长度
Dec 16 #Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
Dec 16 #Javascript
You might like
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
Javascript异步编程async实现过程详解
2020/04/02 Javascript
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
python中解析json格式文件的方法示例
2017/05/03 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
python如何调用php文件中的函数详解
2020/12/29 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
师范应届生教师求职信
2013/11/05 职场文书
师德学习感言
2014/01/31 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
保险公司演讲稿
2014/09/02 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
带你学习MySQL执行计划
2021/05/31 MySQL
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers