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 相关文章推荐
纯js网页画板(Graphics)类简介及实现代码
Dec 24 Javascript
浅析js中2个等号与3个等号的区别
Aug 06 Javascript
document.write的几点使用心得
May 14 Javascript
js控制输入框获得和失去焦点时状态显示的方法
Jan 30 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
Jul 18 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 Javascript
tab栏切换原理
Mar 22 Javascript
自定义vue全局组件use使用、vuex的使用详解
Jun 14 Javascript
解决jquery appaend元素中id绑定事件失效的问题
Sep 12 jQuery
JavaScript插件Tab选项卡效果
Nov 14 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
Nov 11 Javascript
Angular(5.2->6.1)升级小结
Dec 27 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
paypal即时到账php实现代码
2010/11/28 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
php的大小写敏感问题整理
2011/12/29 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
少女风vue组件库的制作全过程
2019/05/15 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
django model object序列化实例
2020/03/13 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
运动会广播稿400字
2014/01/25 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
2014年保育员工作总结
2014/12/02 职场文书
个人思想政治总结
2015/03/05 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS