js获取鼠标坐标位置兼容多个浏览器

这个看似简单的获取坐标功能,可是已经花费我一天时间了,白天一直搜索js获取坐标,找了很多很多,一一检验,结果出现不兼容。真的够烦躁了,但是事情还是要继续,要完成,回来又继续实践,搜索,反复操作,发现自己好多不会呀,特别是jquery自定义方法(函数),根本就不会,很欠缺基础,心里暗暗下决心,弄完这个好好学习一下js,不然老是卡在这方面。时间虽然已经过去很久了,但我还是没有放弃,想想换个关键词搜索一下,是不是可以找到我想要的。搜索“js获取坐标兼容ie8”,一下子出现后几条,于是挑选一个实践,改造,功夫不负有心人,终于出现我想要的结果了。感谢网络,感谢网友,解决了困扰我一天的问题。贴出网上找到的代码。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JavaScript获取鼠标移动时的坐标(兼容:IE8、谷歌、Firefox、Opera)_脚本之家</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
.tip {
width:200px;
border:2px solid #ddd;
padding:8px;
background:#f1f1f1;
color:#666;
}
</style>
<script type="text/javascript"> 

//方法1
function mousePos(e){
  var x,y;
  var e = e||window.event;
  return {
    x:e.clientX+document.body.scrollLeft + document.documentElement.scrollLeft,
    y:e.clientY+document.body.scrollTop + document.documentElement.scrollTop
  };
}; 

//方法2
//Firefox支持属性pageX,与pageY属性,这两个属性已经把页面滚动计算在内了,
//在Chrome可以通过document.body.scrollLeft,document.body.scrollTop计算出页面滚动位移,
//而在IE下可以通过document.documentElement.scrollLeft ,document.documentElement.scrollTop
function getMousePos(event) {
      var e = event || window.event;
      var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
      var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
      var x = e.pageX || e.clientX + scrollX;
      var y = e.pageY || e.clientY + scrollY;
      //alert(‘x: ‘ + x + ‘\ny: ‘ + y);
      return { ‘x‘: x, ‘y‘: y };
    } 

function test(e){
document.getElementById("mjs").innerHTML = getMousePos(e).x+‘,‘+getMousePos(e).y;
};
</script>
</head>
<body>
<div id="mjs" class="tip">获取鼠标点击位置坐标</div>
<div id="test" style="width:1000px;height:1000px;background:#ccc;" onmousemove="test(event)"></div>
</body>
</html>

我改造之后需要的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>7777777</title>
<script src="http://code.jquery.com/jquery-1.7.2.js"></script>
<script type="text/javascript">
//方法1
function mousePos(e){
  var x,y;
  var e = e||window.event;
  return {
    x:e.clientX+document.body.scrollLeft + document.documentElement.scrollLeft,
    y:e.clientY+document.body.scrollTop + document.documentElement.scrollTop
  };
}; 

//方法2
//Firefox支持属性pageX,与pageY属性,这两个属性已经把页面滚动计算在内了,
//在Chrome可以通过document.body.scrollLeft,document.body.scrollTop计算出页面滚动位移,
//而在IE下可以通过document.documentElement.scrollLeft ,document.documentElement.scrollTop
function getMousePos(event) {
      var e = event || window.event;
      var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
      var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
      var x = e.pageX || e.clientX + scrollX;
      var y = e.pageY || e.clientY + scrollY;
      //alert(‘x: ‘ + x + ‘\ny: ‘ + y);
      return { ‘x‘: x, ‘y‘: y };
    } 

function test(object,zhi,e){
//document.getElementById("mjs").innerHTML = getMousePos(e).x+‘,‘+getMousePos(e).y;   

 $("#mydiv1").css("top", getMousePos(e).y+10+"px").css("left", getMousePos(e).x+"px").css("display", "block");
 $("#mydiv1").html(zhi);
};
function hides(object){
//document.getElementById("mjs").innerHTML = getMousePos(e).x+‘,‘+getMousePos(e).y;   

 $("#mydiv1").css("display", "none");
 $("#mydiv1").html("");
};
</script>

<style type="text/css">
.tip {
width:200px;
border:2px solid #ddd;
padding:8px;
background:#f1f1f1;
color:#666;
}
</style> 

</head>

<body>
<button>点击我</button>
<div id="x">我会变红的哦</div>
     <div id="mydiv1" style="position:absolute;display:none;border:1px solid silver;background:silver;">
提示1效果
</div>
<div id="mydiv2" style="position:absolute;display:none;border:1px solid silver;background:silver;">
提示2效果
</div> 

<a id="t1" onMouseOver="test( this,‘终于找到了‘,event)" onMouseOut="hides(this)">鼠标放上去1</a>
<br><br><br><br><br>
<a id="t2" onMouseOver="test(this,‘ok‘,event)" onMouseOut="hides(this)">鼠标放上去2</a> 

</body>
</html>

下面这个ie7,ie8不兼容,部分浏览器可以

<img src="images/a.gif" onclick="GetPosition(event)" />

function GetPostion(e) {
  var x = getX(e);
  var y = getY(e);
}
function getX(e) {
  e = e || window.event;
   
return e.pageX || e.clientX + document.body.scroolLeft;
}

function getY(e) {
  e = e|| window.event;
 return e.pageY || e.clientY + document.boyd.scrollTop;
}

总结一下,信息检索真的很重要,就是要学会提问,搜索关键字。

部分转载于http://www.jb51.net/article/55128.htm

时间: 2024-12-26 21:30:29

js获取鼠标坐标位置兼容多个浏览器的相关文章

原生js获取鼠标坐标方法全面讲解-zmq

原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:event.clientX/Yevent.pageX/Yevent.offsetX/Yevent.layerX/Yevent.screenX/Y 二.分别讲解如下: clientX/Y: clientX/Y获取到的是触发点相对浏览器可视区域左上角距离,不随页面滚动而改变 兼容性:所有浏览器均支持 page

js获取鼠标坐标实例

js获取鼠标坐标实例,关键代码如下: 1.js 代码 /*显示坐标*/ function showTip(obj){ //if(!$.trim($(obj).html())) // return false; var event=window.event; var element=event.srcElement; //var X = $(obj).position().top; //var Y = $(obj).position().left; //alert(X+","+Y); v

js获取鼠标的位置

<!doctype html><html><head><meta charset="utf-8"><title>获取鼠标的位置</title><script>function mouseMove(ev){Ev= ev || window.event;var mousePos = mouseCoords(ev);document.getElementById("xxx").value

原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y

简介 关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种: event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.screenX/Y clientX/Y: clientX/Y获取到的是触发点相对浏览器可视区域左上角距离,不随页面滚动而改变 兼容性:所有浏览器均支持 pageX/Y: pageX/Y获取到的是触发点相对文档区域左上角距离,会随着页面滚动而改变 兼容性:除IE6/7/8不支持外,其余浏览器均支持

js 获取鼠标坐标

var x=...; var y=...; return {'x':x,'y':y}; div.x=...;div.y=...; 哈哈,原来是赋值.所以一个数值变量不能当属性?????好像可以吧. page.x--相对整个页面的坐标 client.x--相对可视区域的坐标 scrollLeft--滚动条水平位置坐标 document.documentElement--访问html根节点 window.addEventListener('load',function(){})==window.lo

JS 获取鼠标当前坐标 兼容IE

最近在弄一个小功能 鼠标移动到当前位置 就在旁边提示我想提示的内容 所以直接拿过来 直接获取移动鼠标的坐标 然后直接在body中直接绘制一块提示的区域内容 function A(e) { var x,y; //获取鼠标坐标 x=e.pageX,y=e.pageY; //绘制提示内容 $('body').append("<div style='position: absolute; top: ' + y + 'px; left: ' + x+ 'px;'>xxxxxx!</div

js 获取元素坐标 和鼠标点击坐标

js 获取元素的位置 var odiv=document.getElementById('divid'); alert(odiv.getBoundingClientRect().left); alert(odiv.getBoundingClientRect().top); js 获取点击时间鼠标坐标 event = event||window.event; //获得相对于body定位的横标值: x=event.clientX //获得相对于body定位的纵标值: y=event.clientY

获取鼠标坐标并且根据鼠标位置不同弹出不同内容

获取鼠标坐标,并且根据鼠标所在div弹出不同内容: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <head

js获取鼠标移动坐标

js获取鼠标移动坐标,很多情况下还需要考虑document.documentElement.scrollLeft . document.documentElement.clientLeft; var _touchstart, _touchend,_touchmove; var isPC=window.ontouchstart===undefined; if(isPC){ _touchstart="mousedown"; _touchmove="mousemove";