2012-05-22 104 views
0

我对iFrame的理解是,里面的内容正是src中包含的内容。我已经看到许多像Facebook等小部件使用iFrame。有人可以解释iFrames吗?

当我尝试使用iFrame时,我有一个HTML文件,里面只有一个div和一些内容,没有头部,正文等。只是HTML中的内容。但iFrame总是加载整个页面,并最终给我一个iFrame内的递归iFrame。

我不明白这是怎么回事,因为我在iFrame中引用的HTML文件只是内容而已。我不包括页眉,页脚,但所有显示无论如何。

我见过人们在讨论将iFrame滚动到某个部分,甚至在src中使用div的id并设置滚动= no。这可以工作,但我的iFrame内容将根据用户输入重新加载,一旦它重新加载,它将返回到iFrame内页面的左上角部分。

这没有任何意义。也许这应该是一个小部件或什么?

编辑为SD表现出一些格式化代码: @Surreal梦

这是奇怪的事情。我使用的是web2py,所以它可能是后端固有的东西造成的。 html文件实际上是一个div封装器,里面有一些元素。但我认为web2py正在添加标题,即使我没有扩展任何布局。我最终通过引用在另一个网址上异地保存的相同HTML文件来使它正常工作。它显示正确,没有web2py干扰html结构。

什么之前发生的事情,我有这样的代码:

{{extend 'layout.html'}} 
<div class="wrapper"> 
<page content> 
<aside id="iFrame wrapper"> 
<iframe src="/rates.html"></iframe> 
</aside> 
</div> 

而这里面的布局,你把所有的页眉,页脚等国内外发生了什么事是web2py的页面的基本结构它会生成整个页面,以及您到达iFrame的位置,然后再次在该iFrame内生成页面,然后再次生成iFrame,这将继续无限地在每个iFrame的页面内呈现页面。

+1

后的你外html和内部HTML两者的代码。 – Joe

+0

您在iframe中加载的内容应该是完整的页面,因此请包含html,head和body标签。它*不会*添加任何额外的东西,所以我很好奇看到你的代码来确定为什么你有额外的iframe。 –

回答

2

iframe将始终加载整个网页,并在您的iframe的src属性中引用。即使你的文件只包含一个div,我相信浏览器认为它是一个完整的页面,并自动添加一个头部和一个正文。

“我看到那里的人都在谈论滚动的iFrame到某款” =>右,一次是在iframe中加载页面时,您可以使用JavaScript访问和操作DOM它:

var myIframe = parent.document.getElementById("myIframe"); 
var window = myIframe.contentWindow; 
0

Iframe总是加载整个页面,如果你想添加或删除网页中的任何内容,你可以使用JQuery。即使你的URL包含Iframe作为一个完整的网页的唯一div 因此,你应该首先在iframe中找到body元素,然后附加所需的标记。

的test.html

<div>hello World</div> 

other.html

<html> 
<head></head> 
<body> 
<iframe src="test.html"></iframe> 
</body> 
<script> 
$(document).ready(function() { 
    $('#prev').contents().find('body').html('<div> blah </div>'); 
}); 
<script> 
</html>