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 相关文章推荐
jquery获取input的value问题说明
Aug 19 Javascript
extjs之去除s.gif的影响
Dec 25 Javascript
基于jquery的loading 加载提示效果实现代码
Sep 01 Javascript
JQuery 控制内容长度超出规定长度显示省略号
May 23 Javascript
JavaScript利用正则表达式去除日期中的“-”
Jul 01 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 Javascript
jQuery自制提示框tooltip改进版
Aug 01 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
React手稿之 React-Saga的详解
Nov 12 Javascript
Vue中qs插件的使用详解
Feb 07 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
Jul 22 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
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
原生js实现放大镜
2017/02/20 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python缩进长度是否统一
2020/08/02 Python
Python使用xpath实现图片爬取
2020/09/16 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
一个C/C++编程面试题
2013/11/10 面试题
杠杆的科学教学反思
2014/01/10 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
优秀员工获奖感言
2014/03/01 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
MySQL 语句执行顺序举例解析
2022/06/05 MySQL