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中dialog属性小记
Sep 03 Javascript
IE6、IE7中获取Button元素的值的bug说明
Aug 28 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
jquery表格内容筛选实现思路及代码
Apr 16 Javascript
jQuery DOM删除节点操作指南
Mar 03 Javascript
详解AngularJS中的filter过滤器用法
Jan 04 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
Oct 26 Javascript
Vue.js常用指令汇总(v-if、v-for等)
Nov 03 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
深入浅析vue-cli@3.0 使用及配置说明
May 08 Javascript
前端深入理解Typescript泛型概念
Mar 09 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
Mar 12 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实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
Python运算符重载详解及实例代码
2017/03/07 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
Python 处理文件的几种方式
2019/08/23 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
给导游的表扬信
2014/01/10 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
小型婚礼主持词
2015/06/30 职场文书
礼貌问候语大全
2015/11/10 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
golang实现浏览器导出excel文件功能
2022/03/25 Golang