使用JavaScript阅读IFrame内容

时间:2010-05-05 22:52:52

标签: javascript iframe

好的,这是我第一次认真对待IFrame,我似乎无法理解一些事情:

首先是我测试的示例代码:

<head>
<script type="text/javascript">
function init(){
  console.log("IFrame content: " + window.frames['i1'].document.getElementsByTagName('body')[0].innerHTML);
}
</script>
</head>
<body onload="init();">
<iframe name="i1" src="foo.txt"/>
</body>

文件“foo.txt”如下所示:

sample text file

问题:

1)iframe似乎表现为HTML文档,文件文本实际上是身体的一部分。为什么? IFrame是否是HTML文档的规则。 iframe的内容不可能只是纯文本吗?

2)由于某种原因,文件内容被包装在 pre 标记内。为什么会这样?总是这样吗?

3)我在javascript中的访问方法正在运行,但还有其他选择吗? [原生js解决方案请]如果内容总是包含在 pre 标记中,那么我实际上必须在 pre 中查找标记而不是查找 innerHTML

4 个答案:

答案 0 :(得分:6)

我很难获得作为iframe的src的TXT文件的内容。 这是我的解决方案:

document.getElementById( 'iframeID' ).contentWindow.document.body.innerText

答案 1 :(得分:4)

innerHTML 会返回元素的完全内容,它是一个非标准化方法,返回等效的对于真实内容,在HTML中,与纯文本相同的是<pre>foo...</pre>

innerText属性可能会更好运。

答案 2 :(得分:0)

  

1)iframe似乎表现为HTML文档,文件文本实际上是身体的一部分。为什么?

您正在使用DOM / JS界面。只有将内容视为HTML / XML时,这才有效。

答案 3 :(得分:0)

这就是浏览器如何处理文本文件,因为它们看起来更好'(不仅仅是iframe内部)。浏览器可以处理很多文件类型,期望它们以原始形式显示所有内容是不合理的,对吗?因为浏览器页面(和iframe)是关于表示的,所以没有人真正使用iframe进行配置或从磁盘读取原始数据。

如果您想完全控制演示文稿,只需将文件类型更改为html,它将被视为html。 (特别是,它将解决'pre'问题)

这会回答你的问题吗?