2017-09-25 18 views
0

2つのコントロールを持つ画面を作成しました。最初のものは、メインのWebページ内にWebページを表示するiframeです。それはうまく動作します。 Underneathは、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

違うドメイン。これは私が作成したWebページです。 – LittleNorm

答えて

0

子供がpostMessage apiを使用して親にそのHTMLを送信する必要があります。親はイベントリスナーを持ち、子がそのHTMLをHTMLに送信するのを待ちます。子供は独自のHTMLを得ることができます

document.documentElement.outerHTML 

window.ondomreadyが一度発射した。

0

文書がまだロードされておらず、文書の内容を取得していないため、iframeの内容を取得していないため、2番目の部分は機能しません(両方のページがサーバー内にあるクロスドメインエラーが発生するため、別のドメインでは動作しません)。

あなたは、メインページがロードされるまで待って、その後、フレームをロードし、フレームがロードされるまで待機し、その後、フレームの内容を取得する必要があります、

<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> 
関連する問題