基于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下阻止表单重复提交、防刷新、防后退
Aug 17 Javascript
jquery对象和javascript对象即DOM对象相互转换
Aug 07 Javascript
JavaScript中的Function函数
Aug 27 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
Apr 13 Javascript
总结javascript中的六种迭代器
Aug 16 Javascript
js实现可旋转的立方体模型
Oct 16 Javascript
BootStrap按钮标签及基本样式
Nov 23 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
vue 插值 v-once,v-text, v-html详解
Jan 19 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
Jul 19 Javascript
Js跳出两级循环方法代码实例
Sep 22 Javascript
js实现石头剪刀布游戏
Oct 11 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
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
几个php应用技巧
2008/03/27 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
详解webpack介绍&安装&常用命令
2017/06/29 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
一百多行python代码实现抢票助手
2018/09/25 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
高三毕业生自我鉴定
2013/12/20 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
购房协议书
2014/04/11 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
党的作风建设心得体会
2014/10/22 职场文书
2014年村官工作总结
2014/11/24 职场文书
重阳节主题班会
2015/08/17 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python