我在浏览器中创建了一个div,在div中添加了一张图片(图片是从后台传过来的),我是监听鼠标点击图片,获取鼠标点击图片时的屏幕坐标,但是在图片上点击同一个点返回的屏幕坐标确不相同,希望大家给看看:
window.onload=function()
{    obj = document.getElementById("imgmap");//找到对象
     obj.onmousedown = down;                   
               }
  //设置鼠标单击监听函数
function down(event)
{
oEvent=event||window.event;  
if(oEvent.button==1)   {
firx=oEvent.clientX-10;   //这个函数的作用要图片的起始点为(0,0)
firy=oEvent.clientY-10;
      document.getElementById("ttc").value=firx;
      document.getElementById("hubj").value=firy;
   }
}
 <div id="imp"  style="width:800px; height:500px; border:1px solid #000; overflow:hidden;"> 
 <img id="imgmap" src="maptest" > 
     </div>
 <input type="text" name ="ttc" id="ttc">
<input type="text" name ="hubj" id="hqbj"> 
每次点击图片上同一个点返回的屏幕坐标不同,这是为什么啊??

解决方案 »

  1.   

    我这里相同的。
    另外代码兼容性好象有点问题,firefox11就无法正常工作
      

  2.   

    这段代码看来应该没有问题,那就其余部分出问题了,谢谢你,那个浏览器兼容应该怎么写,我看网上说oEvent=event||window.event; 这句不是兼容火狐和IE的吗,我都是在IE下测试的,没去去火狐测试过
      

  3.   

    firx=oEvent.clientX-10;这行代码是怎么读取的屏幕坐标啊?怎么我把浏览器窗口,缩小和放大时同一个点返回的坐标不一样!帮忙解释下上面那行代码,如果我想浏览器窗口最大化和缩小的状态下,同一点能读取到相同的值应该怎么写?谢谢。
      

  4.   

    兼容性好的话,直接用jquery吧,他把兼容问题都替你处理了        $(document).ready(function() {
                $('#imgmap').click(function(e) {
                
                    var offset = $(this).offset();
                    alert(e.clientX - offset.left);//相对于图的坐标,如果相对于屏幕的坐标,直接e.clientX
                    alert(e.clientY - offset.top);
                });
            });