问题:为什么在FF3.0下第一次拖动好使,第二次就不行了呢<div id="div" style="background: #666699;width: 300px;height: 200px;border: 0.2cm #CCCCFF solid;cursor: pointer;position:absolute;top: 100px;left:100px;" onmousedown="set(this, event, 1)" onmouseup="set(this, event, 0)" onmouseout="set(this, event, 0)" onmousemove="move(this, event)"></div><script>
var mouse_status = 0, W = 0, H = 0;function set(div, e, t){
var e = e || window.event;
mouse_status = t;
W = e.clientX - parseInt(div.style.left);
H = e.clientY - parseInt(div.style.top);
}function move(div, e){
var e = e || window.event;
if(mouse_status){
div.style.top = e.clientY - H + "px";
div.style.left = e.clientX - W + "px";
}
}
</script>

解决方案 »

  1.   

    firebug 跟下
    走的是不是一样?
      

  2.   

    function move(div, e){
    var e = e || window.event;
    if(mouse_status){
    window.getSelection&&window.getSelection().removeAllRanges();
    div.style.top = e.clientY - H + "px";
    div.style.left = e.clientX - W + "px";
    }
    }
      

  3.   

    逻辑有问题~~
    当你第二次点击鼠标下去之后。mousedown执行了。但是,你松开鼠标之后,mouseup并没有执行。<html>
    <head>
        <title></title>
        <script>
    var mouse_status = 0, W = 0, H = 0;function set(div, e, t){
        document.getElementById("t").innerHTML = document.getElementById("t").innerHTML + "<br />" + e.type;
        var e = e || window.event;
        mouse_status = t;
        W = e.clientX - parseInt(div.style.left);
        H = e.clientY - parseInt(div.style.top);
    }function move(div, e){
        var e = e || window.event;
        if(mouse_status){
        div.style.top = e.clientY - H + "px";
        div.style.left = e.clientX - W + "px";
        }
    }
    </script>
    </head>
    <body>
    <div id="div" style="background: #666699;width: 300px;height: 200px;border: 0.2cm #CCCCFF solid;cursor: pointer;position:absolute;top: 100px;left:100px;" onmousedown="set(this, event, 1)" onmouseup="set(this, event, 0)" onmouseout="set(this, event, 0)" onmousemove="move(this, event)"></div>
    <div id="t"></div></body>
    </html>
    你看下
      

  4.   

    虽然不执行up但是执行out同样效果的,2楼正解
      

  5.   


    要说为什么  我也拿不出官方的说明 只能猜测 没文字的时候选择 点击就回选中 释放的时候 div不释放选中(可以测试下  不一定要清空选中 阻止点击的默认行为也是可以的)