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 相关文章推荐
jQuery Ajax之load()方法
Oct 12 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
Mar 03 Javascript
JavaScript获取当前网页最后修改时间的方法
Apr 03 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
Aug 26 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
基于JavaScript实现前端文件的断点续传
Oct 17 Javascript
详解JavaScript RegExp对象
Feb 04 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
js判断节假日实例代码
Dec 27 Javascript
vue 父组件调用子组件方法及事件
Mar 29 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 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与浏览器缓存的分析
2013/06/03 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
php如何获取文件的扩展名
2015/10/28 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
json 定义
2008/06/10 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
python 切片和range()用法说明
2013/03/24 Python
使用Python对SQLite数据库操作
2017/04/06 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
Python实现一个优先级队列的方法
2020/07/31 Python
python实现xml转json文件的示例代码
2020/12/30 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
销售文员的岗位职责
2013/11/20 职场文书
2014年双拥工作总结
2014/11/21 职场文书
行政主管岗位职责
2015/02/03 职场文书
七年级生物教学反思
2016/02/20 职场文书
python基础之类属性和实例属性
2021/10/24 Python
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB