使用 javascript 的 iframe 问题

Posted

技术标签:

【中文标题】使用 javascript 的 iframe 问题【英文标题】:iframe problem using javascript 【发布时间】:2011-01-10 06:38:00 【问题描述】:

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

document.getElementById('iframe01').contentDocument.body.innerHTMLdocument.frames['iframe01'].document.body.innerHTMLdocument.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。

【问题讨论】:

你需要所有的html吗?或者你只需​​要一个小节?我想我想问的是,你在用 innerHTML 值做什么? 我想要内部 html 内容(这是一个带有 xsl 的 xml),然后在 ckeditor 中显示它。 这是我通过 FF firebug 的 innerhtml 示例:

Title

Rest content Another Content
【参考方案1】:

既然你标记了这个 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 已加载。

【讨论】:

iframe_content.html 包含您的示例

Title

Rest content Another Content
【参考方案2】:

不久前我遇到了类似的问题。尝试使用:

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

这应该适用于 IE 和 FF

【讨论】:

只有在 iframe 中有 body 标签时才有效。但在我的情况下,body 标记不存在,因为我在 iframe 中打开一个带有 xsl 的 xml。它没有显示正文标记它显示一个 标记,我也无法访问

以上是关于使用 javascript 的 iframe 问题的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 iFrame 中使用 JavaScript 获取 iFrame 父页面的引用者?

如何使用 javascript 从 iframe 内部获取 iframe 的高度?具有多个 iframe 的页面呢?

javascript-如何检测 iframe 中的滚动事件?

使用 JavaScript 淡入 iframe

对特定 iframe 使用 javascript 书签 [重复]

使用 JavaScript 将 Chrome 扩展注入 iFrame