正确从框架中退出

框架不流行的一部分原因是它在许多浏览器上糟糕的执行结果，我们都有过不愉快的经历：为了仅仅发现没有框架隐藏在背后，我们不得不离开一个网站，这是令人讨厌的。然而，你可以做得更好：你会学习到怎样控制你的框架。

控制框架的秘密在于TARGET标识符的四个特殊的值。通过使用这些值“_blank”、“_parent”、“_self”和“_top”，你可以从不同级别的框架中跳出来。

这四个值中最常用的是“_top”，它使浏览器窗口摆脱所有的框架。下面的例子说明了如何使用这个值：

<HTML>

<HEAD>

<TITLE> Table of Contents </TITLE>

</HEAD>

<BODY>

<UL>

<LI> <A HREF=“

home.cfm” TARGET=“_top”> HOME </A>

<LI> <A HREF=“chapter1.cfm” TARGET=“CHAPTER”> Chapter 1: </A>

Everything You Need To Know About Active Server Pages

<LI> <A HREF=“chapter2.cfm” TARGET=“CHAPTER”> Chapter 2: </A>

Even More Information On Active Server Pages

</UL>

</BODY>

</HTML>

这个HTML文件被用来建立一个目录表，它有一个超链接，这个超链接指向网站的主页。当你用鼠标点击这个超链接时，你不想让主页被读入目录表的框架中，你也不想让主页被读入章节内容的框架中，你想所有的框架都消失，让主页占据整个屏幕空间。在此例中，属性TARGET=“_top”完成了这一功能。

当你需要将浏览器窗口中的所有框架都消除时，可以使用“_top”值。当你要与外部的网站链接时，这个值是很有用的。如果你不想让外部网站的网页显示在一个框架中的话，就必须使用“_top”值。最后，如果你想不通过框架来提供你网站的版本（这通常是很好的），你应当在你指向版本的链接中使用“_top”值。

TARGET属性的另一个有潜在价值的值是“_parent”，你可以通过在一个frameset文件将<FRAME>标识符的SRC属性指向另一个frameset文件来建立一个框架。当你建立具有一定复杂程度的屏幕布局（见图7.18）时，你就需要用这种方法来建立框架。“_parent”值允许你从当前一级的框架中返回到当前frameset文件的父框架中。

图7.18 复杂的屏幕布局

注意

你可能想知道在一个frameset文件中构建它本身时会发生什么。例如，下面的名为myself.cfm的frameset文件在一个错误的循环中引用了自己：

<TITLE> Vicious Frames </TITLE>

<FRAMESET ROWS=“*” COLS=“*”>

<TARGET SRC=“myself.cfm”>

</FRAMESET>

我很遗憾地告诉大家，计算机对此无法识别，屏幕上什么也没有发生，只显示一个空白的页。

TARGET属性的“_blank”值打开一个新的、空白的窗口。当你想打开一个新窗口时，这个值是很有用的，但不必操心给它一个名字。然而，如果你将来想链接进同一个窗口的话，你应当为这个窗口提供一个名字（见前面的章节“建立一个新窗口”）。

最后，TARGET属性的“_self”值是这个属性的缺省值，你可能从来也不需要这个值。当你点击个链接时，缺省情况下，这个链接所指向的网页将被读入当前的框架中。如果窗口中没有框架，新的网页就被读入当前的窗口中。

对框架的最后考虑

使用框架要小心，你应当时刻注意那许多的网络迷们对框架所报的厌恶态度。当你要使用框架时，你应该考虑是否可以用表格来代替它。

如果你要使用框架，就得小心谨慎地处理它们。当你有一个指向你网点外部的网站的超链接时，不要忘记使用TARGET＝“_top”属性来使所有的框架消失。而且，你应当在低分辨率的屏幕上测试你的网页来确定框架没有影响一些重要的内容。

最后，如果你决定要使用框架，可以考虑提供一个网页的非框架的版本。你可以在你的主页上包含一个No Frame的超链接来允许参观者不使用框架就能浏览你网点的内容。在任何情况下，你都需要建立一个网页的非框架版本，因为并不是所有的浏览器都支持框架。

综上所述，框架在某些情况下确实能改善你的网站，某些特殊的效果只有使用框架才能获得。你可能会冒险疏远一些用户，但网页设计就是充满着冒险的。