Bueno ya conseguí solucionarlo para FF y Chrome, pero como siempre IE da problemas
El código está así:
Código Javascript
:
Ver original// Le añadí la opción de ponerle tiempo
mover : function(desde, cuanto, tiempo){
var obj = { 'right' : 'left', 'bottom' : 'top' }, str = desde in obj ? obj[desde] : desde, multip = str == desde ? 1 : -1;
var resta = { 'left' : 'width', 'top' : 'height' }[str];
var n = cuanto - P(this).getStyle(resta).Numeros();
var estilo = P(this).css('position', 'absolute').css(resta, P(this).getStyle(resta)).posicion(str);
if(!tiempo){
return P(this).css(str, parseFloat(estilo + cuanto * multip) + 'px');
}else{
var incr = cuanto / (tiempo / 20), obj = P(this), timer = setInterval(function(){
if(obj.posicion(str) >= estilo + cuanto){
timer = clearInterval(timer);
return obj;
}else{
obj.css(str, parseFloat(obj.posicion(str) + incr * multip) + 'px');
}
}, 20);
}
},
// ...
Sin embargo, en IE me da error en la función posicion :
Código Javascript
:
Ver original// ...
posicion : function(donde){
var left = this.offsetLeft, top = this.offsetTop, padre = this.offsetParent, body = P(document.body);
while(!/(body|html)/i.test(padre.tagName)){
left += padre.offsetLeft;
top += padre.offsetTop;
padre = padre.offsetParent;
}
return {
'left' : left,
'right' : body.getStyle('width').match(/\d+/)[0]-left,
'top' : top,
'bottom' : body.getStyle('height').match(/\d+/)[0]-top
}[donde];
},
// ...
Haciendo pruebas resulta que el error está en
Código Javascript
:
Ver original'right' : body.getStyle('width').match(/\d+/)[0]-left,
porque devuelve auto.
¿Cómo puedo averiguar cuánto mide el body (y todos los demás porque siempre me devuelve auto -.-') ?
Saludos (: