Javascript uma classe de arrastar
Autor:Eve Cole
Data da Última Atualização:2009-06-11 16:31:49
<HTML>
<CABEÇA>
<SCRIPT LANGUAGE="JavaScript">
<!--
var Arrastar = {
sx: 0,
sim: 0,
ex: 0,
ei: 0,
lx: 0,
apenas: 0,
deslocamentoX: 0,
deslocamentoY: 0,
cdom: nulo,
arrastável: falso,
dragFun : nulo,
tempDrag : function(){
Arrastar.arrastar.call(Arrastar);
},
cache: {},
putCache : função(chave,v){
this.cache[chave] = v;
},
getCache : função(chave){
retorne isto.cache[chave];
},
arrastarIniciar : function(dfun,fn){
tentar{
if(!this.dragAble){
this.cdom = event.srcElement?event.srcElement:event.target;
this.cdom.setCapture(true);
this.sx = evento.screenX;
this.sy = evento.screenY;
este.ex = evento.screenX;
this.ey = evento.screenY;
this.lx = evento.screenX;
this.ly = evento.screenY;
this.dragAble = verdadeiro;
this.dragFun = dfun?dfun:null;
if(fn){fn();}
this.cdom.attachEvent("onmousemove",Drag.tempDrag);
}
}pegar(e){
this.dragEnd();
}
},
arrastar: função(){
tentar{
if(this.dragAble){
este.ex = evento.screenX;
this.ey = evento.screenY;
este.offsetX = este.ex - este.lx;
this.offsetY = this.ey - this.ly;
if(this.dragFun){this.dragFun();}
este.lx = este.ex;
isto.ly = isto.ey;
}
}
pegar(e){
this.dragEnd(null);
}
},
arrastarEnd : function(fn){
if(this.dragAble){
this.cdom.detachEvent("onmousemove",Drag.tempDrag);
this.cdom.releaseCapture();
este.ex = evento.screenX;
this.ey = evento.screenY;
this.dragAble = falso;
if(fn){fn();}
}
this.releaseDrag();
},
releaseDrag : function(){
este.ex = 0;
isto.ey = 0;
isto.sx = 0;
isto.sy = 0;
isto.cdom = null;
this.dragAble = falso;
this.dragFun = null;
este.cache = {};
}
};
função início(){
var d = Drag.cdom.cloneNode(true);
var pos = getBodyPos(Arrastar.cdom);
com(d.estilo){
posição="absoluta";
esquerda=pos.esquerda;
topo=pos.top;
filter='Alfa(Opacidade="30")' ;
}
Drag.putCache("alo",d);
document.body.appendChild(d);
}
função(){
var offx = Drag.offsetX;
var offy = Drag.offsetY;
var to = Drag.getCache("alo");
var l = to.offsetLeft;
var t = to.offsetTop;
com(para.estilo){
esquerda=l+offx;
topo=t+offy;
}
}
função fim(){
var cdom = Arrastar.cdom;
var alo = Drag.getCache("alo");
com (cdom.style)
{
esquerda=alo.offsetLeft;
topo=alo.offsetTop;
posição="absoluta";
}
se(alô)
document.body.removeChild(alo);
}
função getBodyPos(obj){
tentar{
var l = obj.offsetLeft;
var t = obj.offsetTop;
while(obj.parentElement != document.body){
obj = obj.parentElement;
var tl = obj.offsetLeft;
var tt = obj.offsetTop;
eu += tl;
t += tt;
}
return {esquerda:l,topo:t};
}pegar(e){
alerta(e.mensagem);
}
}
//-->
</SCRIPT>
</HEAD>
<CORPO>
<div style="border:solid 1 #7FFFD4;width:300;height:150;background:#3399FF;cursor:move;" onmousedown="Drag.dragStart(ing,start)" onmouseup="Drag.dragEnd(end)">
Testar objeto de arrastar
</div>
</BODY>
</HTML>