3

有谁知道如何从 IFRAME 中获取 HTML?我尝试了几种不同的方法:

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

但他们都没有工作。

我相信他们不工作的原因是我的 iframe 的内容没有正文标签(我正在加载 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 内容(您将收到类似“permission denied to get property 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 回答