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列举css中所有图标的实现代码
Jul 04 Javascript
JS 控件事件小结
Oct 31 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 Javascript
jquery实现的鼠标拖动排序Li或Table
May 04 Javascript
javascript实现在线客服效果
Jul 15 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
JavaScript实现两个select下拉框选项左移右移
Mar 09 Javascript
vue router仿天猫底部导航栏功能
Oct 18 Javascript
Angular之toDoList的实现代码示例
Dec 02 Javascript
基于JS实现一个随机生成验证码功能
May 29 Javascript
在Vue中使用Echarts实例图的方法实例
Oct 10 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
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
vue input 输入校验字母数字组合且长度小于30的实现代码
2018/05/16 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
Python的垃圾回收机制深入分析
2014/07/16 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
python循环输出三角形图案的例子
2019/11/22 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
大学自我鉴定
2013/12/20 职场文书
实习老师离校感言
2014/02/03 职场文书
工程承包协议书
2014/10/20 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js