当你使用框架时,它会给你、访问者以及搜索引擎等带来一系列的问题,而最后可能影响你站点的访问情况和它在搜索引擎中的排名。下面是这些问题中的一部分。
1、使用框架的站点需要更仔细的规划和设计,尤其是其中的链接,稍不注意就会造成窗口的错误,如一些站内的链接另外跳出了新窗口,或本该另开窗口的(如链接到其他站点的页面)没有跳出;
2、不管你相不相信,现在确实还有很多冲浪者在使用那些不支持框架的、很古老的浏览器,这样一来,你有时得考虑建一个无框架版。
3、会浪费你宝贵的屏幕显示面积,你用到的框架和滚动条越多,可以使用的有效面积就越少。
4、框架还会让一些网上新手不知如何下手,特别是当你用得太多如三层甚至更多的时候,会使人们不知该从那儿浏览起。
5、框架会给搜索引擎造成一个严重的技术问题。到目前为止,只有AltaVista和Infoseek两个主要搜索引擎能够处理带框架的页面。而对于其它搜索引擎,当它们在检索这些带框架的页面时,它们看到的只是一个“死”页面(框架结构的页面)。
当然你可以通过另外提供信息来克服这个困难,也就是:在你的只有框架结构的页面里加入<Noframes>...</Noframes>部分,而且其中要有相关的链接,指向一个可以连到你站点所有其它部分的页面。
这时这个框架结构页面应该大致像这样:
---------------------------------
< html>
< head>
< meta name="description" content=" 这 儿 是 你 的 站 点 的 描 述
( Description ) ">
< meta name="keywords" content=" 这 儿 是 关 键 词( KeyWords ) ">
< meta name="Author" content=" 作 者 名 ">
< meta name="Classification" content=" 你 的 站 点 的 分 类 ">
< meta name="ROBOTS" content="ALL">
< meta name="GENERATOR" content="Microsoft FrontPage 3.0">
< title>你 的 页 面 标 题< /title>< /head>
< frameset framespacing="0" border="false" frameborder="0"cols="140,*">
< frame name="contents" target="main" src="home.htm" scrolling="auto">
< frame name="main" src="main.html" scrolling="auto" noresize>
< noframes>
< body>
<p>本页使用了框架结构,但是您的浏览器不支持它。不过您仍可以通过以下链
接访问站点,请点击!</p>
<p><ahref="contents.html">进入</a></p>
</body>
</noframes></frameset>
</html>
---------------------------------
当我们使用FrontPage等编辑工具时,其缺省的<Noframes>部分只是一句:
“Thispageusesframes,butyourbrowserdoesn'tsupportthem."这样不支持框架的搜索引擎
(以及那些浏览者)根本没办法连入你的站点。但是如果你能像上面例子中那样在<Noframes>部分加入一个链接(上例中的contents.html),就能让搜索引擎知道该怎么
找了。
顺便提一句,这时在<head>部分中的<meta>标签对于站点在搜索引擎中的位置将变得非常重要。
6、一旦你使用了框架,你就得对其中每一个页面都要仔细加以控制,因为你要考虑到那些不小心从“后门”进来的访问者——这里是指那些从你的一个不带框架的页面进入者,如果这些页面中没有合适的导览的话,他们就根本看不到站点中的其它部分。
如何避免这种情况呢?可以通过在页面中加入下面这段Javascript脚本(注意:对于框架结构页面不要加入),可以保证绝大部分的浏览者克服这个问题,除非浏览器不支持Javascript或关闭了其中的脚本调试选项。
-------------------------------------
把这段代码放在<head>...</head>中,而且主框架页面取名为index.html。
< script language="JavaScript">< !--if (top == self) self.location.href = "index.html";// --><
/script>
--------------------------------------
这样当访问者直接连入这一页时,浏览器检测到它不在框架中,就会自动转到框架页面(即其中的index.html)。
当然还可以通过在这些页面中使用<meta>标签的自动刷新功能做到:
--------------------------------------
同样在<head>...</head>加入
<metahttp-equiv="Refresh"content="0;URL=index.html">
--------------------------------------
但是这种方法只对4.0以上版本的IE有效,而且绝大多数搜索引擎对这种MetaRefresh功能深恶痛绝,会根本不再检索这个站点。所以建议大家还是用Javascript脚本的好(很奇怪,现在很多站点似乎特喜欢这个标签)。
7、框架的使用会给站点带来一种称为“FrameSpoofing"(框架欺骗)的安全漏洞,攻击者只需使用简单的HTML或JAVASCRIPT就能让一个框架中的某个页面变成任何他所希望的页面,如果他插入一个带FORM表格的页面就可以欺骗性地收集该站点访问者的信息。
大家可以在这儿看一个攻击的简单示例,这个例子打开纽约股市交易所的站点首页,但是在这个首页的框架中插入了其他站点的页面:
http://www.ntsecurity.net/scripts/loader.asp?iD=/security/netscape-frame-test.htm
当然Microsoft和Netscape都发布了相应的修补包,
http://www.microsoft.com/windows/Ie/security/spoof.asp
http://www.netscape.com/download/index.html?cp=djudepart。
8、使用框架还有一个目前没法解决的问题:别人可以随意在他自己的框架里调用你的页面!
我们辛辛苦苦设计的网页当然不想变成别人的一部分,但是当你使用框架时,你自己可以调用的任何页面所有人也都可以同样调用。虽然我们可以在每一页上加入自己的标志,但还是解决不了问题。
谈了这么多框架的毛病,是不是就没有好处呢?当然不,框架的最大好处是让站点的更新变得比较方便。当站点内容变得非常庞大、结构越来越复杂时,如果不使用框架,小小的更新还没问题,稍大一点的变化(比方说增加或减少一个栏目),此时的更简直是重造一个“新站”!
到底用不用框架呢?
我的建议是,如果你的站点内容很多、结构复杂以及更新大且多,或有什么其他的特殊原因,同时你也不在乎别人调用,那么可以使用,但一定要注意上面的那些问题;在其他情况下,能不用就尽量别用,不相信去看看那些商业站点,数一数有几个使用了"框架”?