使用javascript而不是jquery获取div的所有内容,包括iframe的内容

时间:2014-03-12 06:58:14

标签: javascript html dom

我有一个像这样的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的情况下将所有内容都放入字符串变量中。

由于

4 个答案:

答案 0 :(得分:6)

您需要<&lt;> &gt;HTML打印 var content = document.getElementById('tid').innerHTML; content = content.replace(/</g,"&lt;").replace(/>/g,"&gt;"); 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)

由于原始政策相同,

无法执行此操作