给自己参考的一段JS代码

var x,y,z,down=false,obj    
function init(event){
var evt = event ? event : (window.event ? window.event : null); //判断IE还是FF,定义事件源
obj = evt.srcElement ? evt.srcElement : evt.target;     //判断IE还是FF,事件触发对象
if (obj.setCapture) { //如果是IE
    obj.setCapture()            //设置属于当前对象的鼠标捕捉
}
else if (obj.captureEvents) { //如果是FF
    obj.captureEvents(evt.MOUSEMOVE | evt.MOUSEUP); //设置属于当前对象的鼠标捕捉
}
z = evt.z ? evt.z : evt.pageZ;
z=obj.style.zIndex          //获取对象的z轴坐标值
//设置对象的z轴坐标值为100,确保当前层显示在最前面
obj.style.zIndex = 100
var pagex;
var layerx;
pagex = evt.x ? evt.x : evt.pageX; //判断IE还是FF,获取鼠标指针位置相对于屏幕的对象的X坐标
layerx = evt.offsetX ? evt.offsetX : layerX;
x = evt.x ? evt.x : evt.pageX; //判断IE还是FF,获取鼠标指针位置相对于屏幕的对象的X坐标
y = evt.y ? evt.y : evt.pageY; //判断IE还是FF,获取鼠标指针位置相对于屏幕的对象的Y坐标
alert(x);
//x=evt.offsetX   //获取鼠标指针位置相对于触发事件的对象的X坐标
//y=evt.offsetY   //获取鼠标指针位置相对于触发事件的对象的Y坐标
down=true         //布尔值,判断鼠标是否已按下,true为按下,false为未按下
}

function moveit(){
//判断鼠标已被按下且onmouseover和onmousedown事件发生在同一对象上
if(down&&evt.srcElement==obj){
   with(obj.style){
/*设置对象的X坐标值为文档在X轴方向上的滚动距离加上当前鼠标指针相当于文档对象的X坐标值减鼠标按下时指针位置相对于触发事件的对象的X坐标*/

        posLeft=document.body.scrollLeft+evt.x-x
/*设置对象的Y坐标值为文档在Y轴方向上的滚动距离加上当前鼠标指针相当于文档对象的Y坐标值减鼠标按下时指针位置相对于触发事件的对象的Y坐标*/
        posTop=document.body.scrollTop+evt.y-y
   }
}
}

function stopdrag() {
    //onmouseup事件触发时说明鼠标已经松开,所以设置down变量值为false
    down = false
    obj.style.zIndex = z       //还原对象的Z轴坐标值
    if (obj.releaseCapture) { //如果是IE
        obj.releaseCapture() //释放当前对象的鼠标捕捉
    }
    else if (obj.releaseEvents) { //如果是FF
        obj.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP); //释放当前对象的鼠标捕捉

    }
}
原文地址:https://www.cnblogs.com/ahjesus/p/1998634.html