Felipe Diesel

Desenvolvedor de software

Pegando o conteúdo de um iframe

December 10, 2007 -

Hoje tive um daqueles problemas que você pensa, pensa, pensa, e não consegue resolver.

Meu problema era enviar um arquivo via AJAX. Como isso não é possível, temos que usar uma velha técnica na qual cria-se um iframe e se dá o submit do form para este. Tudo certo. Mas temos que pegar o valor do iframevia javascript para saber se correu tudo bem e o que aconteu.

Fiz alguns testes e nao estava conseguindo pegar o valor do iframe. O motivo? Levei 3 horas para descobrir. Não se consegue pegar o valor se o iframe não estiver no mesmo domínio que a página atual.

Ou seja, nos testes eu estava usando tudo menos o domínio atual. Que serviço.

Para pegar o valor, existem 2 métodos:

1) Mais fácil com a jQuery:

$('iframe').contents().find('body').html()

2) Um pouco maior, mas apenas javascript:

var io = document.getElementsByTagName('iframe')[0];
if(io.contentWindow) {
  return io.contentWindow.document.body.innerHTML;
} else if(io.contentDocument){
  return io.contentDocument.document.body.innerHTML;
}

Mas não esqueçam. Tem que ser do mesmo domínio.

Obrigado ao Israel Cefrin por me dar a dica que tinha que funcionar e me fazer descobrir isso.