我有一个像这样的div
<div id="tid">
<iframe>
<html>
<body>
<scripts></scripts>
<iframe>...
//more content
<ifram>
</body>
</html>
</iframe>
</div>
我想使用javascript获得以下内容。
<iframe>
<html>
<body>
<scripts></scripts>
<iframe>...
//more content and cannot guess how many iframes are there.
<ifram>
</body>
</html>
</iframe>
InnerHtml仅返回第一个iframe。我尝试使用.contentDocument.getElementsByTagName(&#39; body&#39;)[0] .innerHTML。但这只返回第一个iframe。我想在不使用jquery的情况下将所有内容都放入字符串变量中。
由于
答案 0 :(得分:6)
您需要<
以<
和>
>
以HTML
打印 var content = document.getElementById('tid').innerHTML;
content = content.replace(/</g,"<").replace(/>/g,">");
document.getElementById('content').innerHTML = content;
TAGS作为平原文字。
试试此代码,
div
查看DEMO
如果您想重复使用html
content
,只需将html
添加到任何其他 var content = document.getElementById('tid').innerHTML;
//the variable content contains the html inside "tid" div.
var iDiv = document.createElement('div');
iDiv.id = 'newDiv';
iDiv.innerHTML = content;
document.getElementsByTagName('body')[0].appendChild(iDiv);
元素,如下所示,
{{1}}
查看DEMO
答案 1 :(得分:1)
如果你只想要身体标签,这应该有效。
var els = document.getElementsByTagName("body");
var allContent = "";
for (var i=0; i < els.length; i++) {
allContent += els[i].innerHTML;
}
答案 2 :(得分:1)
这样做
var iframe = document.getElementById('iframeID');
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
现在您可以使用iframeDocument访问iframe的内容,jquery也可以使用
<强>更新强>
你可以这样做......
var myDiv = document.getElementById("tid");
var iframes = myDiv.getElementsByTagName("iframe");
// now loop over the iframes
for(iframe in iframes){
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
var internalIframes = iframeDocument.getElementsByTagName("iframe");
if(internalIframes.length > 1){
// start the for in loop again
}
}
答案 3 :(得分:0)
无法执行此操作