3

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

document.getElementById('iframe01').contentDocument.body.innerHTMLdocument.frames['iframe01'].document.body.innerHTMLdocument.getElementById('iframe01').contentWindow.document.body.innerHTML、など

しかし、どれも機能しませんでした。

それらが機能しない理由は、iframe のコンテンツに body タグがないためだと思います (XML を読み込んでいます)。iframe のすべてのコンテンツを取得する他の方法はありますか? 私もjQueryにオープンです。

これ:

document.getElementById('iframe01').contentWindow.document.body.innerHTML

IEでは正常に動作しますが、これは:

document.getElementById('iframe01').contentDocument.body.innerHTML

FFには使えません。

4

2 に答える 2

2

この jQuery にタグを付けたので、クロスブラウザーの問題を解決するために jQuery で回答をいただければ幸いです。

$("#iframe01").contents()

iframe のコンテンツの jQuery オブジェクトに移動します。そこから作業できます。セキュリティ上の問題により、実際の HTML コンテンツを取得できない場合があります (「プロパティ htmldocument を取得する許可が拒否されました」などのエラーが表示されます)。

完全なサンプル コード:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(function() {
    $("#clickme").click(function() {
      alert($("#iframe01").contents().find("body").html());
      return false;
    });     
});
</script>
</head>
<body>
  <p id="hello">Hello World, there's an iframe below this. <a href="#" id="clickme">Click me!</a></p>
  <iframe id="iframe01" src="iframe_content.html"></iframe>
</body>
</html>

同じドメインから iframe を読み込む必要があることに注意してください。何かを行う前に、iframe が読み込まれていることを確認してください。

于 2010-01-28T08:04:02.017 に答える
0

少し前に同様の問題がありました。使用してみてください:

document.frames["iframe0"].contentWindow.document.body.innerHTML

それはIEとFFの両方で機能するはずです

于 2010-01-28T06:09:28.677 に答える