Depois de penar por uma hora para descobrir uma maneira multi-plataforma de recuperar as posições vertical e horizontal de um objeto na tela, achei uma solução.
Multi-plataforma no sentido que testei no Firefox 1.0.7, IE 6 e Opera 8.5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function pegarPosicaoX(objeto) { var atual_left = 0; if (objeto.offsetParent) { while (objeto.offsetParent) { atual_left += objeto.offsetLeft objeto = objeto.offsetParent; } } return atual_left; } function pegarPosicaoY(objeto) { var atual_top = 0; if (objeto.offsetParent) { while (objeto.offsetParent) { atual_top += objeto.offsetTop objeto = objeto.offsetParent; } } return atual_top; } |
Para usar, supondo que temos um objeto com um id=”exemplo” na página, descobrimos a posição dele fazendo:
1 2 3 | elemento = document.getElementById('exemplo'); x = pegarPosicaoX(elemento); y = pegarPosicaoY(elemento); |
Em um próximo post mostrarei porque cargas-da-água precisei descobrir a posição de um elemento (no meu caso, foi uma imagem).
