比如说我有两个div,如下:
<div id="div1">
    <div id="div2"></div>
</div>
我在div2中添加一个click事件,希望获得事件发生时鼠标相对于div2左上角的坐标。在网上找了一下,说是用e.offsetX和e.offsetY,但是我发现在Chrome里面是正常的,但是在IE里面alert出来的是距离div1左上角的坐标。求解。iejavajs

解决方案 »

  1.   

    获取div2在页面的位置(offsetLeft,offetTop),再用鼠标在页面的位置,两者相减,就得到鼠标相对div2的位置了
      

  2.   

    docment.getElementById('div2').getBoundingClientRect();div2相对于窗口左上角坐标集
      

  3.   


            document.getElementById('div2').onclick = function(e) {
            e = window.event || e;
            var result = {};
            if(e.offsetX){
                result = {
                    top : e.offsetY,
                    left : e.offsetX
                }
            }else{
                var offsetParentTop = this.offsetTop;
                var offsetParentLeft= this.offsetLeft;
                var offsetParent = this.offsetParent;
                while(offsetParent!=document.body){
                    offsetParentTop += offsetParent.offsetTop;
                    offsetParentLeft += offsetParent.offsetLeft;
                    offsetParent = offsetParent.offsetParent;
                }
                var offsetPageTop = e.clientY,offsetPageLeft = e.clientX;
                result = {
                    top : offsetPageTop  - offsetParentTop,
                    left : offsetPageLeft  - offsetParentLeft
                }
            }
        }
    没算div的边框值.