2011-08-01 66 views
1

我有一个有一个iframe的页面。我通过javascript制作iframe。后来我需要保存该页面并重新打开它的确切内容。例如,如果用户在iframe主体中写了sumthing并保存并重新打开页面,则iframe拥有相同的内容。为了保存页面,我的逻辑是获取文档的innerHTML,创建一个新的html文件并将内容写入它。现在prblm是,当我做document.documentElement.innerHTML,iframe部分确实出现在它,但身体部分和HTML部分丢失。唯一出现的是<iframe></iframe>。 我该如何获得iframe的HTML与父页面的HTML?继承人的代码,让ü在控制台上document.documentElement.innerHTML打印使用的是什么documentElement.innerHTML不显示iframe正文

<html> 
<head> 
    <title>iframe test</title> 
<script type="text/javaScript"> 
function showStr(){ 

     var customArea = document.getElementById('custom-area'); 
     var newdiv = document.createElement('div'); 
     newdiv.setAttribute('id',"myDiv"); 
     customArea.appendChild(newdiv); 
     var htcontents = "<iframe id='myIframe' frameborder='1'></iframe>"; 
     newdiv.innerHTML = htcontents; 
     document.getElementById("myIframe").contentDocument.designMode="on"; 
} 

function showIF() 
{ 
    console.log(document.documentElement.innerHTML); 
} 
</script> 
</head> 
<body onLoad="showStr()"> 
<button id="myButton" onClick="showIF()"></button> 
<div id="custom-area"></div> 
</body> 
</html> 

IM这种铬... 感谢!!看

+0

你真正的意思的身体iframe?在我眼中,iframe的主体是空的。 – reporter

+0

当页面加载时它是空的,但iframe处于可编辑模式,这意味着您可以在其中编写文本。我在iframe中写入sumthing,然后执行检查元素,我可以看到我刚刚在iframe 标记中写入的文本。但是我得到了父文档主体的innerHtml ... iframe主体不见了! – samach

回答

1

基于this post,这里的解决方案:

UPDATE

function showIF() 
{ 
    var f= document.getElementById('myIframe'); 
    var d= f.contentDocument? f.contentDocument : f.contentWindow.document; 
    var customArea = document.getElementById('custom-area'); 
    //read the content of iframe 
    var iframeContent = d.body.innerHTML; 
    //delete the iframe himself 
    f.parentNode.removeChild(f); 
    //Append the html to parent div 
    customArea.innerHTML += iframeContent; 
    //console.log(d.body.innerHTML); 
} 

至少它与我的Chrome浏览器(版本11.0.696.60)

+0

非常感谢...我以前看过这篇文章!但令人费解的是,在这种情况下,我如何得到一个包含父html和iframe html作为一个对象的html,以便我可以将它写入新的html文件? – samach

+0

我更新了我的答案。这个怎么样? – reporter