JavascriptHome internoHTML

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

Eu acho que isso é o que você quer:

 window.frames['iframe01'].document.body.innerHTML 

EDITAR:

Eu tenho uma boa autoridade que isso não funcionará no Chrome e Firefox, embora funcione perfeitamente no IE, que é onde eu testei. Em retrospecto, isso foi um grande erro

Isso vai funcionar:

 window.frames[0].document.body.innerHTML 

Eu entendo que isso não é exatamente o que foi perguntado, mas não quero excluir a resposta porque acho que tem um lugar.

Eu gosto da resposta jquery do @ ravz abaixo.

Ter algo como o seguinte funcionaria.

  // The following function should be inside a script tag function populateIframe(id) { var text = "This is a Test" var iframe = document.getElementById(id); var doc; if(iframe.contentDocument) { doc = iframe.contentDocument; } else { doc = iframe.contentWindow.document; } doc.body.innerHTML = text; } 

Se você der uma olhada no JQuery , você pode fazer algo como:

  $('#my_iframe').contents().find('html').html(); 

Isso supõe que seu pai e filho iframe residem no mesmo servidor, devido à Política de mesma origem em JavaScript.

A resposta de Conroy estava certa. Caso você precise apenas de material da tag body, apenas use:

 $('#my_iframe').contents().find('body').html(); 

Não se esqueça de que você não pode cruzar domínios por causa da segurança.

Então, se este for o caso, você deve usar o JSON .

Você pode usar a propriedade contentDocument ou contentWindow para essa finalidade. Aqui está o código de exemplo.

 function gethtml() { var x=document.getElementById("myframe"); var y=(x.contentWindow || x.contentDocument); if (y.document)y=y.document; alert(y.body.innerHTML); } 

aqui, meu frame é o id do seu iframe. Nota: não é possível extrair o conteúdo de um iframe de um src fora do seu domínio.

 document.getElementById('iframe01').outerHTML 

Você pode obter a fonte de outro domínio se instalar o filtro ForceCORS no Firefox. Quando você ativa este filtro, ele ignora o recurso de segurança no navegador e seu script funcionará mesmo se você tentar ler outra página da Web. Por exemplo, você pode abrir o FoxNews.com em um iframe e ler sua origem. A razão pela qual os desenvolvedores modernos negam essa capacidade por padrão é que, se o outro domínio include um pedaço de JavaScript e você estiver lendo isso e exibi-lo em sua página, ele poderá conter código malicioso e representar uma ameaça à segurança. Portanto, sempre que você estiver exibindo dados de outro domínio em sua página, você deve ter cuidado com essa ameaça real e implementar uma maneira de filtrar todo o código JavaScript do seu texto antes de exibi-lo. Lembre-se, quando uma suposta peça de texto bruto contiver algum código contido nas tags de script, elas não aparecerão quando você as exibir na sua página, mas elas serão executadas! Então, perceba que isso é uma ameaça.

http://www-jo.se/f.pfleger/forcecors

Você pode obter html de um iframe usando este código iframe = document.getElementById (‘frame’); innerHtml = iframe.contentDocument.documentElement.innerHTML