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下:nth-child(an+b)的使用注意
May 28 Javascript
JavaScript来实现打开链接页面的简单实例
Jun 02 Javascript
JavaScript鼠标特效大全
Sep 13 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
js 定位到某个锚点的方法
Nov 19 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
Aug 02 Javascript
基于Vue的ajax公共方法(详解)
Jan 20 Javascript
Jquery的Ajax技术使用方法
Jan 21 jQuery
大转盘抽奖小程序版 转盘抽奖网页版
Apr 16 Javascript
Angular4.0动画操作实例详解
May 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
php addslashes和mysql_real_escape_string
2010/01/24 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
对于js垃圾回收机制的理解
2017/09/14 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
JS实现随机点名器
2020/04/12 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
python实现ID3决策树算法
2018/08/29 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
蔻驰美国官网:COACH美国
2016/08/18 全球购物
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
知识竞赛活动方案
2014/02/18 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js