浅谈Iframe和FRAME的区别
一、Iframe标记的使用
Frame标记即帧标记,我们所说的多帧结构就是在一个浏览器窗口中显示多个HTML文件。现在,我们遇到一种很现实的情况:如有一个教程,是一节一节地上,每页末尾做一个“上一节“、“下一节“的链接,除了每节教程内容不同之外,页面其它部分内容都是相同的,如果一页一页地做笨页面,这似乎太让人厌烦了,这时突发奇想,如果有一种方法让页面其它地方不变,只将教程做成一页一页的内容页,不含其它内容,在点击上下翻页链接时,只改变教程内容部分,其它保持不变,这样,一是省时,另则以后如教程有个三长两短的变动,也很方便,不致于牵一发而动全军了;更重要的是将那些广告Banner、栏目列表、导航等几乎每页的都有的东西只下载一次后就不再下载了。
Iframe标记,又叫浮动帧标记,你可以用它将一个HTML文档嵌入在一个HTML中显示。它不同于Frame标记最大的特征即这个标记所引用的HTML文件不是与另外的HTML文件相互独立显示,而是可以直接嵌入在一个HTML文件中,与这个HTML文件内容相互融合,成为一个整体,另外,还可以多次在一个页面内显示同一内容,而不必重复写内容,一个形象的比喻即“画中画“电视。
Iframe标记的使用格式是:
<Iframe src="URL" width="x" height="x"
scrolling="[OPTION]"
frameborder="x"></iframe>
src:文件的路径,既可是HTML文件,也可以是文本、ASP等;
width、height:"画中画"区域的宽与高;
scrolling:当SRC的指定的HTML文件在指定的区域不显不完时,滚动选项,如果设置为NO,则不出现滚动条;如为Auto:则自动出现滚动条;如为Yes,则显示;
FrameBorder:区域边框的宽度,为了让“画中画“与邻近的内容相融合,常设置为0
Frame 对象
Frame 对象代表一个 HTML 框架。
在 HTML 文档中 <frame> 每出现一次,就会创建一个 Frame对象。
Frame 对象的属性
属性 |
描述 |
容纳框架的内容的文档。 |
|
设置或返回是否显示框架周围的边框。 |
|
设置或返回框架的 id。 |
|
设置或返回指向包含框架内容描述文档的 URL。 |
|
设置或返回框架的顶部和底部页空白。 |
|
设置或返回框架的左边缘和右边缘的空白。 |
|
设置或返回框架的名称。 |
|
设置或返回框架是否可调整大小。 |
|
设置或返回框架是否可拥有滚动条。 |
|
设置或返回应被加载到框架中的文档的 URL。 |
标准属性
属性 |
描述 |
设置或返回元素的 class 属性。 |
|
设置或返回文本的方向。 |
|
设置或返回元素的语言代码。 |
|
设置或返回元素的 title 属性。 |
1、frame不能脱离frameSet单独使用,iframe可以;
2、frame不能放在body中;如下可以正常显示:
<!--<body>-->
<frameset rows="50%,*">
<frame name="frame1"
src="test1.htm"/>
<frame name="frame2"
src="test2.htm"/>
</frameset>
<!--<body>-->
如下不能正常显示:
<body>
<frameset rows="50%,*">
<frame name="frame1"
src="test1.htm"/>
<frame name="frame2"
src="test2.htm"/>
</frameset>
<body>
3、嵌套在frameSet中的iframe必需放在body中;如下可以正常显示:
<body>
<frameset>
<iframe
name="frame1" src="test1.htm"/>
<iframe
name="frame2" src="test2.htm"/>
</frameset>
</body>
如下不能正常显示:
<!--<body>-->
<frameset>
<iframe
name="frame1" src="test1.htm"/>
<iframe
name="frame2" src="test2.htm"/>
</frameset>
<!--</body>-->
4、不嵌套在frameSet中的iframe可以随意使用;
如下均可以正常显示:
<body>
<iframe name="frame1"
src="test1.htm"/>
<iframe name="frame2"
src="test2.htm"/>
</body>
<!--<body>-->
<iframe name="frame1"
src="test1.htm"/>
<iframe name="frame2" src="test2.htm"/>
<!--</body>-->
5、frame的高度只能通过frameSet控制;iframe可以自己控制,不能通过frameSet控制,如:
<!--<body>-->
<frameset rows="50%,*">
<frame name="frame1"
src="test1.htm"/>
<frame name="frame2"
src="test2.htm"/>
</frameset>
<!--</body>-->
<body>
<frameset>
<iframe height="30%"
name="frame1" src="test1.htm"/>
<iframe height="100"
name="frame2" src="test2.htm"/>
</frameset>
</body>
1Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性。
frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架
Iframe标记又叫浮动帧标记,可以用它将一个HTML文档嵌入在一个HTML中显示。它和Frame标记的最大区别是在网页中嵌入的<Iframe></Iframe>所包含的内容与整个页面是一个整体,而<Frame></Frame>所包含的内容是一个独立的个体,是可以独立显示的。另外,应用Iframe还可以在同一个页面中多次显示同一内容,而不必重复这段内容的代码。
2iframe 可以放到表格里面。frame 则不行。
<table>
<tr>
<td><iframe id="" src=""></iframe></td><td></td>
</tr>
</table>
3frame必须在frameset里
而frameset不能与body元素共存,也就说有frameset元素的文档只能是一个框架集,不能有别的东东
4IFrame是放在网页的什么地方都行
但是frame只能放到上下左右四个方向
5。iframme 是活动帧
而frame是非活动帧
iframe使用方法如下
<iframe scr="sourcefile"
frameborder=0 width="width"
height="height"></iframe>
iframe用起来更灵活,不需要frame那么多讲究
而且放的位置也可以自己设 ,
iframe是内嵌的,比较灵活,不过也有不好的地方,就是位置在不同的浏览器和分辨率下有可能不同,有时会把本来好好的页面搞得变形
iframe就没有这个限制
6iframe 可以加在网页中任何一个地方。
而frame 通常做框架页
iframe是一个网页中的子框架,两网页间是父子关系
frame是框架,由多个并列的网页构成 ,iframe是浮动的。就像是浮动面板,而frame是固定的。只能四个方向上的。
7<iframe>是被嵌入在网页的元素,而<frame>用于组成一个页面的多个框架!
iframe 更利于版面的设计
frame 一条直一条竖的不美观
frame的那一条线也可以去掉的呦!
只不过,iframe更方便对其进行数据的交换吧!
iframe可以放置到你想放的任意位置,控制起来比frame方便
8iframe是内部帧,可以嵌在一个页面里面,设置内部帧的属性可以使得整体看上去象一个完整的页面,而不是由多个页面组成,frame有frame的好处,比如何多网站,上面放广告条,左边放菜单,右边放内容,这样上边和左边的内容都可不动,只刷新右边页面的内容,选择iframe还是frame完全看自己的需求。
说白了,用IFrame比用Frame少一个文件(FrameSet),但支持Frame的浏览器比较多。
还有iframe可以放在表格里,然后ifame设置成width=100%
height=100%
我就可以只需修改我的表格的宽度和高度,这样的话有利于排版
其实Frame是一个控件
使用方法和Panle相同。
frame是把网页分成多个页面的页面。它要有一个框架集页面frameset
iframe是一个浮动的框架,就是在你的页面里再加上一个页面,
<frame>用来把页面横着或竖着切开,
<iframe>用来在页面中插入一个矩形的小窗口
Frame一般用来设置页面布局,将整个页面分成规则的几块,每一块里面包含一个新页面.
iframe用来在页面的任何地方插入一个新的页面.
因此,Frame用来控制页面格式,比如一本书,左边是章节目录,右边是正文,正文很长,看的时候要拖动,但又不想目录也被拖动得开不到了.因此最好将页面用Frame分成规则的2页,一左一右.
而iframe则更灵活,不要求将整个页面划分,你可以在页面任何地方用iframe嵌入新的页面.
我个人认为:
<frame>用于全页面
<iframe>只用于局部
除了对搜索引擎不友好外,还有什么明显的缺陷吗?
目前框架的所有优点完全可以使用Ajax实现,因此已经没有必要使用框架了。减少框架也可以减少出现XXS等问题。减少框架也可以减少一定请求。
但是有一些情况是必须使用框架,例如想把页面的JS独立隔离或者使用框架做一些跨域的Ajax请求。 例如腾讯微博,他通过框架代理,使所有Ajax请求Referer进行统一,既方便CRSF的控制也可以做到跨域的效果。例如腾讯微博的:http://message.t.qq.com/proxy.html 文件,他就是通过框架来实现跨域操作。
又例如在非HTML5的环境下要做到无刷新上传也可以通过框架构造一个上传文件环境。当然这个也可以用Flash代替。
重载页面时不需要重载整个页面,只需要重载页面中的一个框架页(减少了数据的传输,增加了网页下载速度)
方便制作导航栏
框架的缺点
会产生很多页面,不容易管理
不容易打印
浏览器的后退按钮无效
代码复杂,无法被一些搜索引擎索引到
多数小型的移动设备(PDA 手机)无法完全显示框架
多框架的页面会增加服务器的http请求
iframe高度控制很不方便,需要使用各种HACK,除非确定开发的是GReader之类的玩意;
想要用模态对话框时位置与遮罩都很烦,除非我就不打算用fixed的库了。
然后,看到GR之类的似乎也没用iframe的样子,就不考虑在这方面做太多尝试了…
frameset相关属性介绍
border 设置框架的边框粗细。
bordercolor 设置框架的边框颜色。
frameborder 设置是否显示框架边框。设定值只有0、1;0 表示不要边框,1 表示要显示边框。
cols
纵向分割页面。其数值表示方法有三种:“30%、30(或者30px)、”;数值的个数代表分成的视窗数目且数值之间用“,”隔开。“30%”表示该框架区域占全部浏览器页面区域的30%;“30”表示该区域横向宽度为30像素;“”表示该区域占用余下页面空间。例如:cols="25%,200,*" 表示将页面分为三部分,左面部分占页面25%,中间横向宽度为200像素,页面余下的作为右面部分。
rows 横向分割页面。数值表示方法与意义与cols相同。
framespacing 设置框架与框架间的保留的空白距离。