Alguém sabe como tirar o HTML de um IFRAME? Eu tentei de várias maneiras diferentes:
document.getElementById("iframe01").contentDocument.body.innerHTML
, document.frames["iframe01"].document.body.innerHTML
, document.getElementById("iframe01").contentWindow.document.body.innerHTML
etc
mas nenhum deles funcionou.
Acredito que a razão pela qual eles não estão funcionando é que o conteúdo do meu iframe não tem uma marca de corpo (estou carregando XML). Qualquer outra maneira de obter todo o conteúdo do iframe? Estou aberto ao jQuery também.
Este:
document.getElementById("iframe01").contentWindow.document.body.innerHTML
funciona bem no IE, mas isso:
document.getElementById("iframe01").contentDocument.body.innerHTML
não funciona para FF.
Respostas:
2 para resposta № 1Desde que você marcou este jQuery, eu suponho que você apreciaria uma resposta no jQuery para passar os problemas entre navegadores.
$("#iframe01").contents()
irá levá-lo para o objeto jQuery para oconteúdo do iframe. Você pode trabalhar de lá. Problemas de segurança podem impedir que você obtenha o conteúdo HTML real (você receberá um erro como "permissão negada para obter a propriedade htmldocument").
Código de amostra completa:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(function() {
$("#clickme").click(function() {
alert($("#iframe01").contents().find("body").html());
return false;
});
});
</script>
</head>
<body>
<p id="hello">Hello World, there"s an iframe below this. <a href="#" id="clickme">Click me!</a></p>
<iframe id="iframe01" src="iframe_content.html"></iframe>
</body>
</html>
Observe que você terá que carregar o iframe do mesmo domínio e ter certeza de que o iframe foi carregado antes de fazer qualquer coisa.
0 para resposta № 2
Eu tive um problema semelhante há um tempo atrás. Tente usar:
document.frames["iframe0"].contentWindow.document.body.innerHTML
Isso deve funcionar tanto para o IE quanto para o FF