惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
Last Week in AI
Last Week in AI
The Cloudflare Blog
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
S
SegmentFault 最新的问题
量子位
大猫的无限游戏
大猫的无限游戏
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
InfoQ
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Engineering at Meta
Engineering at Meta

博客园 - ylm㊣

C#线程类Thread初步 div+css构建模板技巧收藏 CrystalReport建立步骤 C# 2.0 命令行编译器 javascript (收藏代码) - ylm㊣ - 博客园 javascript 技巧(转) 给firefox添加ie方法和属性 JS菜单大全 JS弹出窗口 委托的例子 每个开发人员现在应该下载的十种必备工具 C# vb.net 语法比较 C#函数集 SQl语句学习专题(转) 數据庫物理設計經驗談 数据库设计经验谈(转) SQL模糊查询 正则表达式详解 关于23种设计模式的有趣见解(转)
FRAMESET
ylm㊣ · 2006-12-12 · via 博客园 - ylm㊣

先说明一下几个重要的概念如下:

<FRAMESET> :用以划分主视图,即将整个页面首先分为几个大的区域(每个区域是一个单独的.html,.asp,.aspx文件),可多层嵌入

rows: 20%, 80% rows跟在FRAMESET后面,用以划分当前要划分的行数,当前指将页面分成20%和80%上下两部分。

cols:  20%, 80%    同上,将当前页面分成20%和80%左右两部分。

<FRAME name=123 src="maincontrol_f.files/left.htm" target="dynamic"> 

这个是真正说明被框架所包含的单独文件的地方,src:位置,target:目标框架的名字,name:用以被其它页面的target属性所指向。

<NOFRAMES></NOFRAMES>此标签内的内容是,当用户的浏览器不支持frameset时所显示给用户看的内容。

有了以上的说明,看下面的内容就没有疑问了:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
<HEAD>
<TITLE>
这个页面包含框架。需要浏览器支持。
</TITLE>
<META http-equiv=content-type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1491" name=GENERATOR>
</HEAD>
<FRAMESET rows="20%, 80%" >//
<FRAME src="maincontrol_f.files/top.htm" scrolling="no" noresize  frameborder="0">
<FRAMESET cols="15%, 85%">
<FRAME src="maincontrol_f.files/left.htm" target="dynamic">
<FRAME name=wwm src="maincontrol_f.files/main.htm" namo_target_frame="myframe" >
</FRAMESET>      
<NOFRAMES>
   <body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
    <p>这个页面包含框架。需要浏览器支持。</p>
    </body>
</NOFRAMES>
</FRAMESET>
    </HTML>

如果有一个文件成为多个链接的目标时(比如说一个html文件,被多个frame 的target属性所指定,作为替代在每一个frame里指定target属性的方法如下:<BASE target="dynamic">,目标名称必须以字母开始。

上面的html文件里面跟在FRAME后的scrolling,noresize,frameborder,weight,height是它的一些常用属性,试试就知道了。

 frameset的部分属性的意义如下(也是从网上找的:)

name-- name of frame for targetting
src-- source of frame content
frameborder(1|0) -- request frame borders
marginwidth -- margin widths in pixels
marginheight -- margin height in pixels
scrolling (yes|no|auto)  -- scrollbar or none
align -- vertical or horizontal alignment
height -- suggested height
width -- suggested width

除此以外,还有一个iframe的概念:用以在html文件中嵌入文件。示例如下:

<BODY text=black vLink=purple aLink=red link=blue bgColor=white>
<iframe name="import_frame" width=580 height=80 src="11111.html" frameborder=auto>
</iframe>
<P> 1.aspx</P>
</BODY>

其常用的属性如下:
      name:内嵌帧名称

  width:内嵌帧宽度(可用像素值或百分比)

  height:内嵌帧高度(可用像素值或百分比)

  frameborder:内嵌帧边框

  marginwidth:帧内文本的左右页边距

  marginheight:帧内文本的上下页边距

  scrolling:是否出现滚动条(“auto”为自动,“yes”为显示,“no”为不显示)

  src:内嵌入文件的地址

  style:内嵌文档的样式(如设置文档背景等)

  allowtransparency:是否允许透明

说明:同一页面间的iframe框架内的所有元素均可相互访问,但前提是:所有页面都已被页面正确载入。这是个很好的事情,因为如果只是为了好看而用frameset却失去了互访能力就不值得了,至少我这样认为。

不过使用iframe也是有限制了,比如iframe的一些透明效果就需要浏览器支持的:

像以下的代码如果IE版本低于5.5就看不到效果了:

<IFRAME ID="Frame1" SRC="transparentBody.htm" allowTransparency="true"></IFRAME>
<IFRAME ID="Frame2" SRC="transparentBody.htm" allowTransparency="true" STYLE="background-color: green"> </IFRAME>
<IFRAME ID="Frame3" SRC="transparentBody.htm"></IFRAME>
<IFRAME ID="Frame4" SRC="transparentBody.htm" STYLE="background-color: green"> </IFRAME>

可惜的是,在iframe里没有target属性来指定目标了。

而且关于iframe的使用也会使得制作网页的人有可能利用其溢出漏洞而攻击浏览者: 

具体地讲,一个叫做SHDOCVW.DLL的负责翻译IFRAME、FRAME和EMBED标记的通用Windows DLL文件受到缓冲溢出攻击的影响。恶意人员通过构造一个恶意的HTML文件,在其<IFRAME>标记中的“SRC”和“NAME”参数包含超长字符串,就可以引发缓冲区溢出攻击。成功利用该漏洞可以执行任意代码。当用户浏览HTML网页或查看HTML格式的邮件时,如果其中包含恶意构造的HTML标记,有可能系统会被恶意人员远程接管。