Javascript Iframe innerHTML
有谁知道如何从IFRAME中获取HTML我尝试了几种不同的方法:
document.getElementById('iframe01').contentDocument.body.innerHTML document.frames['iframe01'].document.body.innerHTML document.getElementById('iframe01').contentWindow.document.body.innerHTML
等等
我想这是你想要的:
window.frames['iframe01'].document.body.innerHTML
编辑:
我有这个权威,它不会在Chrome和Firefox中工作,虽然它在IE中是完美的,这是我testing它的地方。 回想起来,这是一个很大的错误
这将工作:
window.frames[0].document.body.innerHTML
我明白,这不是确切的问题,但不想删除答案,因为我认为它有一个地方。
我喜欢@ ravz的jQuery下面的答案。
有类似以下的东西会工作。
<iframe id = "testframe" onload = populateIframe(this.id);></iframe> // 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; }
如果你看看JQuery ,你可以做如下的事情:
<iframe id="my_iframe" ...></iframe> $('#my_iframe').contents().find('html').html();
这是假设您的iframe父母和孩子驻留在相同的服务器上,由于在JavaScript中的相同的原则政策 。
康罗伊的回答是对的。 如果你只需要身体标签的东西,只需使用:
$('#my_iframe').contents().find('body').html();
不要忘记,由于安全性,您不能跨域。
所以如果是这样的话,你应该使用JSON 。
您可以使用contentDocument或contentWindow属性来达到此目的。 这里是示例代码。
function gethtml() { var x=document.getElementById("myframe"); var y=(x.contentWindow || x.contentDocument); if (y.document)y=y.document; alert(y.body.innerHTML); }
在这里,我的框架是你的iframe的ID。 注意:您无法从域外src中的iframe中提取内容。
document.getElementById('iframe01').outerHTML
如果您在Firefox上安装ForceCORSfilter,则可以从其他域获取源代码。 当你打开这个filter时,它将绕过浏览器中的安全function,即使你尝试阅读另一个网页,你的脚本也会工作。 例如,您可以在iframe中打开FoxNews.com,然后阅读其源代码。 现代网站默认拒绝这种能力的原因是因为如果其他域名包含一段JavaScript并且正在读取并在您的页面上显示,则可能包含恶意代码并构成安全威胁。 因此,无论何时显示页面上的其他域的数据,您都必须注意这种真正的威胁,并实施一种方法,在您要显示文本之前从文本中滤除所有JavaScript代码。 请记住,当一段假想的原始文本包含脚本标签中包含的一些代码时,它们将不会显示在您的页面上,但它们将运行! 所以,意识到这是一个威胁。