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 相关文章推荐
dojo 之基础篇(二)之从服务器读取数据
Mar 24 Javascript
学习ExtJS fit布局使用说明
Oct 08 Javascript
jquery 页面全选框实践代码
Apr 02 Javascript
JavaScript 对象模型 执行模型
Oct 15 Javascript
JS cookie中文乱码解决方法
Jan 28 Javascript
jquery 页面滚动到底部自动加载插件集合
Jan 31 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
jQuery解析返回的xml和json方法详解
Jan 05 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
Mar 13 Javascript
JavaScript箭头函数中的this详解
Jun 19 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
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
php实现微信扫码支付
2017/03/26 PHP
javascript 禁止复制网页
2009/06/11 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
Python实现自动签到脚本功能
2020/08/20 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
小区门卫值班制度
2014/01/24 职场文书
《自然之道》教学反思
2014/02/11 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
教师远程培训感言
2014/03/06 职场文书
优秀护士演讲稿
2014/04/30 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
珍惜资源的建议书
2014/08/26 职场文书
实习计划书范文
2015/01/16 职场文书
歌咏比赛主持词
2015/06/29 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技