使用 javascript 的 iframe 问题
Posted
技术标签:
【中文标题】使用 javascript 的 iframe 问题【英文标题】:iframe problem using javascript 【发布时间】:2011-01-10 06:38:00 【问题描述】:有人知道如何从 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。
【问题讨论】:
你需要所有的html吗?或者你只需要一个小节?我想我想问的是,你在用 innerHTML 值做什么? 我想要内部 html 内容(这是一个带有 xsl 的 xml),然后在 ckeditor 中显示它。 这是我通过 FF firebug 的 innerhtml 示例:Title
Rest content Another Content既然你标记了这个 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不久前我遇到了类似的问题。尝试使用:
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 中的滚动事件?