<body><div id="gg"  style=" width:200px; height:190px;  position:absolute;border:1px solid #666666">
</body>
<script>
var gg = document.getElementById("gg")gg.onmouseover = function(){   document.onmousedown =function(e)
      {
         e = e||event
         var   tempx = e.clientX - gg.offsetLeft
         var   tempy = e.clientY - gg.offsetTop
        document.onmousemove = function(evt)
            {
                  evt = evt||event
                  gg.style.left = (evt.clientX-tempx)+"px"
                  gg.style.top = (evt.clientY-tempy)+"px"            }

            
        document.onmouseup = function ()
          {
             document.onmousemove = null;
             document.onmouseup = null;
          }
        
}
}
</script>

解决方案 »

  1.   

    讲一下理由吧
    ls的大虾
    为什么e
    就不能用在下面的那个函数里面了???
      

  2.   

    FF下没有clientX 和 clientY
    用 pageX 和 pageY
      

  3.   

    真的没有clientX
    可是效果却是对的
    真是奇怪
      

  4.   

    每一个涉及到兼容性的方法都必须要写x=function=(e),尽管这里的onmousedown 包含了onmousemove ,但是它们不是作用同一个对象(两个不同的方法),所以onmousemove 要重新监听。这里写成evt只是为了区别上面的e,它们不是同一个对象。