A-A+
JavaScript event取得鼠标绝对位置
本文章来给大家详细介绍JavaScript event取得鼠标绝对位置代码,有需要学习的朋友可参考参考,代码如下:
- // 取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;
- }
- //例,代码如下:
- function CPos(x, y)
- {
- this.x = x;
- this.y = y;
- }
- //获取控件的位置
- function GetObjPos(ATarget)
- {
- var target = ATarget;
- var pos = new CPos(target.offsetLeft, target.offsetTop);
- var target = target.offsetParent;
- while (target)
- {
- pos.x += target.offsetLeft;
- pos.y += target.offsetTop;
- target = target.offsetParent
- }
- return pos;
- }
- //测试,代码如下:
- var pos = GetObjPos($id("t1"));
- $id("div2").style.left = pos.x + "px";//"10px";
- //$id("div2").style.top = pos.y * 1px;
- $id("div2").style.top = pos.y + "px";
- //实例,代码如下:
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <title> New Document </title>
- <meta name="Generator" content="EditPlus">
- <meta name="Author" content="">
- <meta name="Keywords" content="">
- <meta name="Description" content="">
- </head>
- <body onmouseMove="getXY(event)">
- <script language="JavaScript">
- <!--
- function mouseX(evt) {
- if (evt.pageX) return evt.pageX;
- else if (evt.clientX)
- return evt.clientX + (document.documentElement.scrollLeft ?
- document.documentElement.scrollLeft :
- document.body.scrollLeft);
- else return null;
- }
- function mouseY(evt) {
- if (evt.pageY) return evt.pageY;
- else if (evt.clientY)
- return evt.clientY + (document.documentElement.scrollTop ?
- document.documentElement.scrollTop :
- document.body.scrollTop);
- else return null;
- }
- function getXY(event)
- {
- var e = event || window.event;
- var x = mouseX(e);
- var y = mouseY(e);
- document.getElementById("XY").innerHTML = "X:" + x + "<br />Y:" + y;
- }
- function getX(elementID)
- {
- var el = elementID
- return el.offsetLeft
- }
- function getY(elementID)
- {
- var el = elementID
- return el.offsetTop
- }
- function getElementPositionX(elemID)
- {
- var offsetTrail = document.getElementById(elemID);
- var offsetLeft = 0;
- while(offsetTrail)
- {
- offsetLeft += offsetTrail.offsetLeft;
- offsetTrail = offsetTrail.offsetParent;
- }
- if (navigator.userAgent.indexOf("Mac") != -1 &&
- typeof(document.body.leftMargin) != "undefined") {
- offsetLeft += document.body.leftMargin;
- }
- return offsetLeft;
- }
- function getElementPositionY(elemID)
- {
- var offsetTrail = document.getElementById(elemID);
- var offsetTop = 0;
- while(offsetTrail)
- {
- offsetTop += offsetTrail.offsetTop;
- offsetTrail = offsetTrail.offsetParent;
- }
- if (navigator.userAgent.indexOf("Mac") != -1 &&
- typeof(document.body.leftMargin) != "undefined") {
- offsetTop += document.body.topMargin;
- }
- return offsetTop;
- }
- function getElementPositionXY(elemID)
- {
- var offsetTrail = elemID;
- var offsetLeft = 24;
- var offsetTop =0;
- while(offsetTrail)
- {
- offsetLeft += offsetTrail.offsetLeft;
- offsetTop += offsetTrail.offsetTop;
- offsetTrail = offsetTrail.offsetParent;
- }
- if (navigator.userAgent.indexOf("Mac") != -1 &&
- typeof(document.body.leftMargin) != "undefined") {
- offsetLeft += document.body.leftMargin;
- offsetLeft += document.body.leftMargin;
- }
- document.getElementById("txt_left").innerText = offsetLeft;
- document.getElementById("txt_top").innerText = offsetTop;
- document.getElementById("divMsg").style.top = offsetTop + "px";
- }
- //-->
- </script>
- //鼠标的绝对位置:
- <br />
- <span id="XY" style="color:red;"></span><br /><br />
- 控件输入框txtPos的绝对位置:<br />
- X:<span id="txt_left" style="color:red;"></span><br />
- Y:<span id="txt_top" style="color:red;"></span><br />
- <input type="text" name="txtPos" id="txtPos" onfocus="getElementPositionXY(this)"/>
- <br /><br />
- <div id="divMsg" style="height:60px;width:100px;background-color:#cccccc"></div>
- </body>
- </html>
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以事件触发元素内界的左上角为参考点(包括滚动距离,当有边框时,可能出现负数)