Javascript 获取鼠标当前的位置实现方法


Posted in Javascript onOctober 27, 2016

有时候,我们需要得到窗口拖动或者鼠标移动的距离,此时可以通过计算鼠标前后在页面中的位置来得到想要的结果,下面介绍几个事件属性:

1、客户区坐标位置

鼠标事件都是在浏览器视口中的特定位置上发生的。这个位置信息保存在事件对象的 clientX 和 clientY 属性中。它们的值表示事件发生时鼠标指针在视口中的水平和垂直坐标(不包括页面滚动的距离)。如下图所示:

Javascript 获取鼠标当前的位置实现方法

var div = document.getElementById("myDiv"); //获取元素
EventUtil.on(div, "click", function(event){
 event = EventUtil.getEvent(event);
 alert("Screen coordinates: " + event.screenX + "," + event.screenY);
});

注:其中,EventUtil.on()表示为元素绑定事件,EventUtil.getEvent(event)表示获取事件对象。EventUtil是自定义的事件对象(使用JavaScript实现),里面包含了一些跨浏览器的方法,具体实现,请看另一篇文章《一些跨浏览器的事件方法》。如果项目使用了jQuery插件,可相应的替换成对应的方法。

2、页面坐标位置

事件对象属性pageX 和pageY,能告诉你事件是在页面中的什么位置发生的。换句话说,这两个属性表示鼠标光标在页面中的位置(相当于鼠标在窗口中的位置坐标 + 页面滚动的距离)。

var div = document.getElementById("myDiv");//获取id为"myDiv"的元素
EventUtil.on(div, "click", function(event){//为元素绑定click事件
 event = EventUtil.getEvent(event);//获取event事件对象
 var pageX = event.pageX,pageY = event.pageY;
 if (pageX === undefined){//IE8及更早版本
  pageX = event.clientX + (document.body.scrollLeft || document.documentElement.scrollLeft);
 }
 if (pageY === undefined){
  pageY = event.clientY + (document.body.scrollTop || document.documentElement.scrollTop);
 }
 alert("Page coordinates: " + pageX + "," + pageY);
});

3、屏幕坐标位置

通过screenX 和screenY 属性就可以确定鼠标事件发生时鼠标指针相对于整个屏幕的坐标信息。如下图所示:

Javascript 获取鼠标当前的位置实现方法

var div = document.getElementById("myDiv");
EventUtil.on(div, "click", function(event){
 event = EventUtil.getEvent(event);
 alert("Screen coordinates: " + event.screenX + "," + event.screenY);
});

文章参考自《JavaScript高级程序设计第三版》

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
js中top/parent/frame概述及案例应用
Feb 06 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
AngularJS中处理多个promise的方式
Feb 02 Javascript
详解Vue.js动态绑定class
Dec 20 Javascript
jQuery元素选择器实例代码
Feb 06 Javascript
微信小程序 侧滑删除(左滑删除)
May 23 Javascript
jquery+css实现下拉列表功能
Sep 03 jQuery
Node.js log4js日志管理详解
Jul 31 Javascript
对Vue beforeRouteEnter 的next执行时机详解
Aug 25 Javascript
AngularJS修改model值时,显示内容不变的实例
Sep 13 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
Sep 05 Javascript
webpack proxy 使用(代理的使用)
Jan 10 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 #Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 #Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 #Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 #Javascript
简单理解vue中el、template、replace元素
Oct 27 #Javascript
深入理解JavaScript定时机制
Oct 27 #Javascript
解析javascript图片懒加载与预加载的分析总结
Oct 27 #Javascript
You might like
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
java解析json方法总结
2019/05/16 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
JavaScript制作简单的框选图表
2017/05/15 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
python提取内容关键词的方法
2015/03/16 Python
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
Python贪心算法实例小结
2018/04/22 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Django时区详解
2019/07/24 Python
Jupyter加载文件的实现方法
2020/04/14 Python
倩碧英国官网:Clinique英国
2018/08/10 全球购物
求网格中的黑点分布
2013/11/06 面试题
幼儿园春游活动方案
2014/01/19 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫
Python可视化神器pyecharts绘制水球图
2022/07/07 Python
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers