<div contenteditable style="position:absolute;left:50px;top:20px;">
<div style="background-color:blue;" onmousedown="move(this.parentNode,event);";>拖动我</div><br>
<img border="0" src="img.gif">
</div>
<script>
function move(element,event){
var event=event||window.event;
var x=parseInt(element.style.left);
var y=parseInt(element.style.top);
var maxLeft=parseInt(document.body.clientWidth)-parseInt(element.clientWidth);
var maxTop=parseInt(document.body.clientHeight)-parseInt(element.clientHeight); var deltaX=event.clientX-x;
var deltaY=event.clientY-y;
//添加临时事件
if(document.addEventListener){//2级DOM
document.addEventListener("mousemove",moveHandler,true);
document.addEventListener("mouseup",upHandler,true);
}else if(document.attachEvent){//IE5+
document.attachEvent("onmousemove",moveHandler);
document.attachEvent("onmouseup",upHandler);
}else{//IE4
var oldonmousemove=document.onmousemove;
var oldonmouseup=document.onmouseup;
document.onmousemove=moveHandler;
document.onmouseup=upHandler;
}
//我们处理该事件,不让其他元素见到它
if(event.preventDefault){//2级DOM
event.preventDefault();
}else{//IE
event.returnValue=false;
} //鼠标移动事件
function moveHandler(e){
if(!e){//IE
e=window.event;
} element.style.left=(e.clientX-deltaX)+"px";
element.style.top=(e.clientY-deltaY)+"px";
var left=parseInt(element.style.left);
var top=parseInt(element.style.top);
if(left<0){
element.style.left="0px";
}
if(left>maxLeft){
element.style.left=maxLeft+"px";
}
if(top<0){
element.style.top="0px";
}
if(top>maxTop){
element.style.top=maxTop+"px";
}
if(e.stopPropagation){//2级DOM
e.stopPropagation();
}else{//IE
e.cancelBubble=true;
}
}
//鼠标按键弹起
function upHandler(e){
if(!e){
e=window.event;
}
if(document.removeEventListener){//2级DOM
document.removeEventListener("mouseup",upHandler,true);
document.removeEventListener("mousemove",moveHandler,true);
}else if(document.detachEvent){//IE5+
document.detachEvent("onmouseup",upHandler);
document.detachEvent("onmousemove",moveHandler);
}else{//IE4
document.onmouseup=oldonmouseup;
document.onmousemove=oldonmousemove;
}
if(e.stopPropagation){//2级DOM
e.stopPropagation();
}else{//IE
e.cancelBubble=true;
}
}
}
</script>