基于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 相关文章推荐
jquery的flexigrid无法显示数据提示获取到数据
Jul 19 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
Apr 19 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
浅谈js的ajax的异步和同步请求的问题
Oct 07 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
详解Vue.js在页面加载时执行某个方法
Nov 20 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
微信小程序onShareTimeline()实现分享朋友圈
Jan 07 Javascript
动态规划之使用备忘录来改进Javascript函数
Apr 07 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
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
php实现的双色球算法示例
2017/06/20 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
vue仿element实现分页器效果
2018/09/13 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
python 正则式使用心得
2009/05/07 Python
Python字符串切片操作知识详解
2016/03/28 Python
详谈python read readline readlines的区别
2017/09/22 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
django解决订单并发问题【推荐】
2019/07/31 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
Jupyter加载文件的实现方法
2020/04/14 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
医院护士的求职信范文
2013/12/26 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
高中生期末评语大全
2014/01/28 职场文书
实习计划书范文
2015/01/16 职场文书
房屋产权证明书
2015/06/19 职场文书
中秋联欢会主持词
2015/07/04 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python