2017-09-25 87 views
0

我创建了一个屏幕,其上有两个控件。第一个是在主网页中显示网页的iframe。这工作正常。在下面是一个textarea,我想在其中显示创建iframe页面的HTML。这里是我的HTML摘要: 我该如何做这项工作?从iframe中的页面获取HTML

<iframe id='myiframe'></iframe> 
<textarea id='mybuffer'></textarea> 

var cow = document.getElementById('myiframe'); 
var pig = document.getElementById('mybuffer'); 
cow.src='http:google.com'; //this works 
pig.value=cow.innerHTML; //this does not 
+0

如果页面在不同的领域,你不打算单独使用JavaScript。 – epascarello

+0

请参考[这个问题](https://stackoverflow.com/questions/926916/how-to-get-the-bodys-content-of-an-iframe-in-javascript) –

+0

它不是在不同的域。这是我创建的网页。 – LittleNorm

回答

0

孩子需要使用postMessage api送父母的HTML。父母会有一个事件监听器,等待孩子将html发送给它。孩子可以使用自己的html

document.documentElement.outerHTML 

一旦window.ondomready已经发射。

0

第二部分不起作用,因为文档尚未加载,并且因为您没有获取文档的内容,而是得到iframe本身的内容(您说这两个页面都在您的服务器中,如果它们在不同的域它不会工作,因为你会得到一个跨源错误)。

你必须等待,直到主页面加载,然后加载框架,等到框架加载,然后拿到帧的内容:

<head> 
    <script type="text/javascript"> 
    function getFrameHTML() { 
     var pig = document.getElementById('mybuffer'); 
     var cow = document.getElementById('myiframe'); 
     pig.value = cow.contentDocument.documentElement.outerHTML; //documentElement is <html> 
    } 

    function loadFrame() { 
     var cow = document.getElementById('myiframe'); 
     cow.addEventListener("load",getFrameHTML); 
     cow.src = 'http://YouHost/YourPage.html'; 
    } 
    </script> 
</head> 

<body onload="loadFrame()"> 
    <iframe id="myiframe"></iframe> 
    <textarea id="mybuffer"></textarea> 
</body>