Bueno tengo dos opciones, pero no sé cuál es la correcta, porque a veces devuelven lo mismo y a veces diferente:
Código Javascript
:
Ver originalposicion : 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];
},
y
Código Javascript
:
Ver originalposicion : function(donde){
var left = this.offsetLeft, top = this.offsetTop, padre = this.parentNode, body = P(document.body);
while(!/(body|html)/i.test(padre.tagName)){
left += padre.offsetLeft;
top += padre.offsetTop;
padre = padre.parentNode;
}
return {
'left' : left,
'right' : body.getStyle('width').match(/\d+/)[0]-left,
'top' : top,
'bottom' : body.getStyle('height').match(/\d+/)[0]-top
}[donde];
},
En principio la que me funciona 'mejor' es la primera, con offsetParent (con el add-on Web Developer de FF averiguo el left y lo comparo con el resultado), pero me gustaría saber por qué no se puede usar parentNode.
Saludos :D