firefox下鼠标位置问题,如何实现offsetX
页面下面有多个table,我想得到鼠标在其中一个table中移动时的坐标,是相对这个table内部的坐标,并且考虑滚动条的因素
ie下实现很简单,直接用event.offsetX和event.offsetY即可。
但是在firefox一直没有成功,网上的方法很多,比较公认的方法为:
posx=event.clientX+document.body.scrollLeft-document.body.clientLeft;
posy=event.clientY+document.body.scrollTop-document.body.clientTop;
但我一直没有得到正确结果,并且发现document.body.clientLeft与document.body.clientTop总是返回0,请帮我看下吧
一直调不通,心急如焚,谢谢
------解决方案--------------------<!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>无标题文档</title>
<script type="text/javascript">
function getTablePosition(id){
var table=document.getElementById(id);
var style="";
if(document.defaultView&&document.defaultView.getComputedStyle){
style=document.defaultView.getComputedStyle(table);
}else{
style=table.currentStyle;
}
return{
'x':style.left=='auto'?table.offsetLeft:style.left,
'y':style.top=='auto'?table.offsetTop:style.top
}
}
function getMousePosition(e){
var a=e
------解决方案--------------------window.event;
var x=a.pageX
------解决方案--------------------(a.clientX+(document.documentElement.scrollLeft
------解决方案--------------------document.body.scrollLeft));
var y=a.pageY
------解决方案--------------------(a.clientY+(document.documentElement.scrollTop
------解决方案--------------------document.body.scrollTop));
return{
'x':x,
'y':y
}
}
function init(){
var table=document.getElementById("test");
table.onmousemove=function(e){
var tablePosition=getTablePosition("test");
var mousePosition=getMousePosition(e);
var x=parseInt(mousePosition.x)-parseInt(tablePosition.x);
var y=parseInt(mousePosition.y)-parseInt(tablePosition.y);
document.getElementsByTagName("div")[0].innerHTML=x+":"+y;
}
}
window.onload=init;
</script>
</head>
<body>
<div></div>
<table id="test" cellspacing="0" border="1">
<tr>
<th>id</th>
<th>name</th>
<th>score</th>
<th>comment</th>
</tr>
<tr>
<td>1</td>
<td>zzg</td>
<td>85</td>
<td>A</td>
</tr>
<tr>
<td>2</td>
<td>lx</td>
<td>70</td>
<td>B</td>