/ problema / iframe usando javascript - javascript, jquery, iframe, innerhtml

problema de iframe usando javascript - javascript, jquery, iframe, innerhtml

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.innerHTMLetc

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 № 1

Desde 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