基于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 相关文章推荐
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 Javascript
Ajax的概述与实现过程
Nov 18 Javascript
最常用的jQuery表单验证(简单)
May 23 jQuery
Mac系统下Webstorm快捷键整理大全
May 28 Javascript
浅谈在koa2中实现页面渲染的全局数据
Oct 09 Javascript
通过cordova将vue项目打包为webapp的方法
Feb 02 Javascript
vue配置文件实现代理v2版本的方法
Jun 21 Javascript
聊聊Vue中provide/inject的应用详解
Nov 10 Javascript
js仿360开机效果
Dec 26 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获取表单所有复选框的值的方法
2014/08/28 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
JavaScript中Function函数与Object对象的关系
2015/12/17 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
python实现2048小游戏
2015/03/30 Python
Python实现感知机(PLA)算法
2017/12/20 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
如何理解python面向对象编程
2020/06/01 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
存储过程的优点有哪些
2012/09/27 面试题
暑假实习求职信范文
2013/09/22 职场文书
应届生求职信写作技巧
2013/10/24 职场文书
给海归自荐信的建议
2013/12/13 职场文书
农民入党思想汇报
2014/01/03 职场文书
八项规定整改措施
2014/02/12 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
走群众路线剖析材料
2014/10/09 职场文书
人事文员岗位职责
2015/02/04 职场文书
琅琊山导游词
2015/02/05 职场文书
教学副校长工作总结
2015/08/13 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL