21

HTMLをIFRAMEから取得する方法を知っている人はいますか?私はいくつかの異なる方法を試しました:

document.getElementById('iframe01').contentDocument.body.innerHTML
document.frames['iframe01'].document.body.innerHTML
document.getElementById('iframe01').contentWindow.document.body.innerHTML

4

10 に答える 10

20

これがあなたが望むものだと思います:

window.frames['iframe01'].document.body.innerHTML 

編集:

これはChromeとFirefoxでは機能しませんが、私がテストしたIEでは完全に機能します。今思えば大失敗だった

これはうまくいきます:

window.frames[0].document.body.innerHTML 

これは正確に尋ねられたものではないことは理解していますが、場所があると思うので回答を削除したくありません。

以下の@ravzのjqueryの回答が好きです。

于 2008-09-26T12:35:00.430 に答える
12

次のようなものがあればうまくいきます。

<iframe id = "testframe" onload = populateIframe(this.id);></iframe>

// The following function should be inside a script tag

function populateIframe(id) { 

    var text = "This is a Test"
var iframe = document.getElementById(id); 

var doc; 

if(iframe.contentDocument) { 
    doc = iframe.contentDocument; 
} else {
    doc = iframe.contentWindow.document; 
}

doc.body.innerHTML = text; 

  }
于 2010-08-18T08:32:17.967 に答える
9

JQueryを見ると、次のようなことができます。

<iframe id="my_iframe" ...></iframe>

$('#my_iframe').contents().find('html').html();

これは、Javascriptの同一オリジン ポリシーにより、iframe の親と子が同じサーバーに存在することを前提としています。

于 2008-09-26T12:32:18.533 に答える
5

コンロイの答えは正しかった。body タグの内容のみが必要な場合は、次を使用します。

$('#my_iframe').contents().find('body').html();
于 2012-12-12T15:58:05.520 に答える
2

セキュリティ上、ドメインをまたぐことはできないことを忘れないでください。

したがって、この場合はJSONを使用する必要があります。

于 2008-09-26T12:38:20.330 に答える
2

そのために contentDocument または contentWindow プロパティを使用できます。これがサンプルコードです。

function gethtml() {
  const x = document.getElementById("myframe")
  const y = x.contentWindow || x.contentDocument
  const z = y.document ? y.document : y
  alert(z.body.innerHTML)
}

ここでmyframeは、iframe の ID です。注: ドメイン外の src から iframe からコンテンツを抽出することはできません。

于 2011-09-02T21:11:39.940 に答える
1
document.getElementById('iframe01').outerHTML
于 2014-06-19T11:30:51.357 に答える