JavaScript取得鼠标绝对位置程序代码介绍


Posted in Javascript onSeptember 16, 2012

首先不同浏览器中event位置属性的分析:

1. IE的event.x,event.y是以事件触发元素的父元素外界为参考点(不包括滚动距离)
2. Firefox的event.pageX,event.pageY是以body元素为参考点(包括滚动距离)
3. event.clientX,event.clientY以浏览器左上角为参考点(不包括滚动距离)
4. IE的event.offsetX,event.offsetY和Firefox的event.layerX,event.layerY以事件触发元素内界的左上角为参考点(包括滚动距离,当有边框时,可能出现负数)

然后是DOM对象高度属性分析

1. scrollHeight: 获取对象的滚动高度
2. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
3. scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
4. scrollWidth:获取对象的滚动宽度
5. offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
6. offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
7. offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置

有了以上分析,写出两个取位置的函数

// 取X轴位置 
function mouseX(evt) { 
// firefox 
if (evt.pageX) return evt.pageX; 
// IE 
else if (evt.clientX) 
return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); 
else return null; 
} 
// 取Y轴位置 
function mouseY(evt) { 
// firefox 
if (evt.pageY) return evt.pageY; 
// IE 
else if (evt.clientY) 
return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); 
else return null; 
}

获取Html控件的绝对位置的两种方法
function getAbsPoint(e){ 
var x = e.offsetLeft, y = e.offsetTop; 
while (e = e.offsetParent) { 
x += e.offsetLeft; 
y += e.offsetTop; 
} 
alert("x:" + x + "," + "y:" + y); 
} 
function getAbsPoint(obj){ 
var x, y; 
oRect = obj.getBoundingClientRect(); 
x = oRect.left 
y = oRect.top 
alert("(" + x + "," + y + ")") 
}

注意

document.body.scrollLeft,document.body.scrollTop只用于IE6以前的版本,在IE6中,对没有宣告 DOCTYPE,或者宣告的是transitional DOCTYPE,那么IE6将使用document.documentElement.scrollLeft 来获取鼠标的绝对位置

Javascript 相关文章推荐
javascript 写类方式之二
Jul 05 Javascript
js或css实现滚动广告的几种方案
Jan 28 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
Nov 03 Javascript
js使用cookie记录用户名的方法
Nov 26 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
Nov 03 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
vue实现拖拽的简单案例 不超出可视区域
Jul 25 Javascript
JS实现页面跳转与刷新的方法汇总
Aug 30 Javascript
countup.js实现数字动态叠加效果
Oct 17 Javascript
vue中使用GraphQL的实例代码
Nov 04 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 Javascript
JS函数参数的传递与同名参数实例分析
Mar 16 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
Sep 14 #Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
Sep 14 #Javascript
javascript时区函数介绍
Sep 14 #Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
Sep 14 #Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
Sep 14 #Javascript
基于JQuery的一句话搞定手风琴菜单
Sep 14 #Javascript
JQuery select控件的相关操作实现代码
Sep 14 #Javascript
You might like
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
爱游人:Travelliker
2017/09/05 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
C语言笔试题
2014/09/04 面试题
费用会计岗位职责
2014/01/01 职场文书
市三好学生主要事迹
2014/01/28 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
幼儿教师求职信
2014/05/24 职场文书
法定代表人证明书
2014/11/28 职场文书
母亲节寄语大全
2015/02/27 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle