2014-03-12 14 views
1

我有一个div像这样得到DIV的所有内容,包括JavaScript的使用I帧的内容不是jQuery的

<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('body')[0] .innerHTML。但是这只能返回第一个iframe。我想要所有的内容到字符串变量,而不使用jQuery。

谢谢

回答

0

不能做到这一点,因为同源策略的

1

如果你只想要身体标签这应该工作。

var els = document.getElementsByTagName("body"); 
var allContent = ""; 

for (var i=0; i < els.length; i++) { 
    allContent += els[i].innerHTML; 
} 
6

需要更换< WITH &lt;及其与&gt;> TO PRINT HTML标签为纯文本。

试试这个代码,

var content = document.getElementById('tid').innerHTML; 
content = content.replace(/</g,"&lt;").replace(/>/g,"&gt;"); 
document.getElementById('content').innerHTML = content; 

看到这个DEMO

,如果你想重用divhtml,只需添加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); 

看到这个DEMO

+0

谢谢,,这正与我的例子,但不符合实际情况的工作。实际就像广告意义的HTML。我想要在div中获得整个html。 –

+0

整个html div是什么意思?你不想打印纯文本的HTML?你想在另一个地方使用div html内容吗? –

+0

我不想打印,我想把脚本和所有内容放入一个变量中。在真实案例中,iframe内容只能获得一个级别。但我不知道有多少iframes在那里:( –

1

立即执行此

var iframe = document.getElementById('iframeID'); 
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document; 

可以使用iframeDocument访问iframe的内容,jQuery也同样

UPDATE

你可以做些什么像这样..

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 
    } 

} 
+0

这些iframes没有id,无法通过类来判断(动态生成)。并不知道这里有多少个嵌套的iframe。 –

相关问题