2017-09-25 147 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>