Web设计小组

Web创作常见问题解答:HTML框架


英语-荷兰语-法国
目录-完整FAQ(HTML)-整个常见问题解答(文本)
上一节-下一节

本文档回答了网络作者经常提出的问题。虽然它的重点是HTML相关的问题,但此FAQ也回答了一些与CSS、HTTP、JavaScript、服务器配置等相关的问题。

本文件由Darin McGrew保管<darin@htmlhelp.com>并定期发布到新闻组comp.infosystems.www.authoring.html.上次更新时间为2007年4月26日。

第11节:HTML框架

  1. 如何创建框架?什么是框架集?
  2. 如何使一个框架中的链接或表单更新另一个框架?
  3. 为什么我的链接会打开新窗口而不是更新现有框架?
  4. 如何一次更新两个帧?
  5. 我如何摆脱框架?
  6. 如何确保我的框架文档显示在其框架集中?
  7. 有办法防止被陷害吗?
  8. 如何指定特定的框架组合而不是默认文档?
  9. 如何删除边框周围的边框?
  10. 如何制作一个有垂直滚动条但没有水平滚动条的框架?
  11. 如何更改带边框文档的标题?
  12. 为什么我的框架没有我指定的确切尺寸?
  13. 使用框架有什么问题吗?
  14. 搜索引擎不喜欢框架吗?

11.1. 如何创建框架?什么是框架集?

框架允许作者将浏览器窗口划分为多个(矩形)区域。在一个窗口中可以显示多个文档,每个文档都在自己的窗口中框架。图形浏览器允许独立于每个帧滚动这些帧其他,并且链接可以更新一个框架中显示的文档,而无需影响其他人。

你不能只是在现有文档中“添加框架”。相反,您必须创建定义特定组合框架,然后在其中显示内容文档框架。框架集文档还应在无框架元素。

HTML 4框架模型具有重大设计缺陷这会给web用户带来可用性问题。使用框架时应格外小心。

另请参阅

11.2. 如何使一个框架中的链接或表单更新另一个框架?

在框架集文档中(包含<框架集> <帧>标签),确保使用名称属性。下面的示例创建了一个名为“navigation”的顶部框架和一个底部框架名为“content”的框架:

<帧集行=“*,3*”><frame name=“navigation”src=“navigation.html”><frame name=“content”src=“content.html”><noframes><车身><!-- 替代非框架版本--></body></noframes></框架集>

然后,在带有链接的文档中,使用目标属性指定帧应该用于显示链接。目标属性应该匹配目标帧的值名称属性。)例如:

<a target=“content”href=…>

要以表单提交为目标,请使用目标的属性表格元素,如下所示:

<form target=“content”action=…>

注意,当表单完全由JavaScript处理时,目标必须在JavaScript中指定frame。的值目标属性为无关紧要。

通常,默认目标帧是当前帧(“_self”)。要更改页面上每个链接/表单的默认目标,请使用目标的属性基础元素,如下所示:

<base target=“content”>

11.3. 为什么我的链接会打开新窗口而不是更新现有框架?

如果没有与您用于目标属性,然后将打开一个新的浏览器窗口,该窗口将被指定为您使用的名称。此外,目标=“_blank”将打开一个新的、未命名的浏览器窗口。

在HTML 4中目标属性值为对大小写敏感,因此作业成本法基础知识两者均指同一框架/窗口,以及_顶部_顶部二者都具有相同的含义。然而,大多数浏览器都会处理目标属性值区分大小写且不识别基础知识作为与…相同作业成本法,或_顶部作为拥有的特殊含义_顶部.

此外,一些浏览器还包含防止文档的安全功能避免被第三方框架集劫持。在这些浏览器中,如果文档的链接指向由位于与文档不同的服务器上的框架集文档则链接会在新窗口中打开。

11.4. 如何一次更新两个帧?

使用单个链接:基于HTML的技术链接到一个新的框架集文档,该文档指定新的帧组合。基于JavaScript的解决方案使用onClick(单击)的属性更新附加帧的链接。

基于HTML的技术可以使用目标=“_top”属性(替换整个框架集)。但是,如果要更新的帧是嵌套框架集。在初始框架集文档中,使用辅助框架集文档定义嵌套框架集。例如:

<框架集cols=“*,3*”><frame src=“contents.html”name=“contents”><frame src=“frameset2.html”name=“显示”><noframes><车身><!-- 替代非框架版本--></body></noframes></框架集>

链接现在可以使用TARGET=“显示”属性同时替换框架集2.html文档。

基于JavaScript的解决方案使用onClick(单击)属性来执行二次更新。例如:

<a href=“用户需求1"target=“框架1"onClick=“顶部。框架2.location='用户需求2';“>更新框架</a>

链接将更新框架1具有用户需求1正常情况下。如果读者的浏览器支持JavaScript(并已启用),则框架2也将更新(使用用户需求2).

11.5条。我如何摆脱框架?

如果你是作者,这很容易。您只需添加目标属性设置为将读者带到预期的“外部”文件。赋予它价值_顶部.

在许多当前浏览器中,无法在完整的浏览器窗口,至少不太容易。读者需要复制所需帧的URL,然后请求手动访问该URL。

我建议那些想为读者提供这一选择的作者在文档中添加指向文档本身的链接,并使用目标属性设置为_顶部所以文件如果链接被跟踪,则显示在完整窗口中。

11.6. 如何确保我的框架文档显示在其框架集中?

当直接访问框架集状态的子文档时显示时没有周围框架集的上下文。

如果读者的浏览器启用了JavaScript支持,则如下所示脚本将还原框架集:

<SCRIPT TYPE=“text/javascript”>if(parent.location.href==self.location.ref){if(window.location.href.replace)window.location.replace('frameset.html’);其他的//导致后退按钮出现问题,但有效window.location.href='框架集.html';}</SCRIPT>

一种更通用的方法是“恢复帧”链接:

还原帧

请注意,在这两种情况下,都必须有单独的框架集文档对于每个内容文档。如果链接到默认框架集文档,则读者将获得默认内容文档,而不是他/她原来的内容文档正在尝试访问。这些框架集文档应该自动生成,以避免手工制作的单调和不准确。

请注意,您可以围绕为框架集状态添加书签时出现问题通过使用链接到这些单独的框架集文档目标=“_top”,而不是链接到单个内容文件。

11.7. 有办法防止被陷害吗?

“装裱”是指将您的文档显示在没有你的允许,别人的框架。这可能会意外发生(框架集作者忘记使用目标=“_top”链接到文档时)或故意(框架集作者希望用他/她自己的内容显示您的内容导航或横幅框架)。

为了避免“陷害”他人的文档,您必须添加目标=“_top”指向指向外部文档的所有链接您的预期范围。

不幸的是,没有可靠的方法来指定特定的文档应该显示在完整的浏览器窗口中,而不是显示在当前帧。一个解决方法是使用<基本目标=“_top”>在文档中,但这仅指定的默认目标框架链接在当前文档中,而不是文档本身。

如果读者的浏览器启用了JavaScript,那么下面的脚本将自动删除任何现有框架集:

<script type=“text/javascript”>if(top.frames.length!=0){if(window.location.href.replace)top.location.replace(self.location.href);其他的top.location.href=self.document.href;}</script>

另一种脚本是

<script type=“text/javascript”>函数breakOut(){if(self!=顶部)window.open(“我的URL”,“_top”,“”);}</script></头部><BODY onLoad=“breakOut()”>

11.8. 如何指定框架的特定组合而不是默认文档?

不幸的是,这是不可能的。使用框架浏览网站时,URL不会更改为单个框架中的文档发生更改。这意味着无法指示文档的组合构成框架集当前状态的。

作者可以提供多个框架集文档,其中一个用于框架内容的每个组合。这些框架集文档可能会自动生成由CGI程序动态创建。作者可以链接到这些单独的框架集文档使用TARGET=“_top”(目标=“_top”).因此,当前框架集文档的URL将始终指定显示的帧的组合,允许链接、书签等。正常工作。

11.9. 如何删除框架周围的边框?

删除框架周围的边框涉及到不绘制框架边界和消除帧之间的空间。显示无边界帧最受支持的方法是<框架集。。。边框=0 FRAMEBORDER=0帧间距=0>.

请注意,这些属性是专有的,不是HTML的一部分4.01规范。(HTML 4.01确实为FRAME元素定义了FRAMEBORDER属性,但不适用于FRAMESET元素。)此外,删除框架周围的边框会使调整大小变得困难它,因为此边界在大多数GUI中也用于更改框架。

11.10. 如何制作带有垂直滚动条但没有水平滚动条的框架?

拥有带有垂直滚动条但没有水平滚动条用于定义框架SCROLLING=“自动”(默认设置),并具有不需要水平滚动。无法指定一个框架应该有一个滚动条,但不能其他的。使用SCROLLING=“是”将强制双向滚动条(即使不需要),以及使用SCROLLING=“否”将禁用所有滚动条(即使在滚动是访问框架内容所必需的)。没有其他值滚动属性。

11.11. 如何更改带边框文档的标题?

显示的标题是框架集文档的标题而不是任何框架中的页面。若要更改显示的标题,请使用链接到新的框架集文档TARGET=“_top”(目标=“_top”)(替换整个框架集)。

11.12. 为什么我的框架没有我指定的确切尺寸?

旧版本的Netscape Navigator似乎可以转换基于像素的框架维度到整体百分比,并使用这些基于百分比的布置框架时的尺寸。因此,具有基于像素的维度的帧将使用与框架集文档中指定的大小不同。舍入误差将根据浏览器的确切大小而变化窗口。

此外,Navigator似乎存储了基于百分比的维度内部,而不是原始的基于像素的维度。因此,当调整窗口大小时,框架将根据新的窗口大小和旧的基于百分比的维度。

没有办法阻止这种行为。为了适应它,您应该设计您的站点以适应框架尺寸。这是另一种适合变化的情况在浏览器的演示文稿中。

11.13. 使用框架有什么问题吗?

框架设计的基本问题是框架集在浏览器中创建不可寻址的状态。一旦框架集中的任何框架改变了其默认内容,再也没有办法解决框架集的当前状态。很难对这样的框架集状态。在其他媒体中引用这样的帧集状态是不可能的。当直接访问这种框架集状态的子文档时显示时没有周围框架集的上下文。基本的浏览器功能(例如,打印、在浏览器的历史记录)与框架集的行为不同。此外,浏览器无法识别哪个帧应该具有焦点,这会影响滚动、搜索和键盘快捷键的使用。

此外,框架关注布局而非信息结构,许多框架网站的作者忽视了提供有用的替代方案中的内容无框架元素。这两个因素都会导致不同浏览器的可访问性问题与作者和搜索引擎的预期相去甚远。

另请参阅

11.14. 搜索引擎不喜欢框架吗?

搜索引擎可以直接链接到框架内容文档,但它们无法链接到帧组合这些内容文档是为其设计的。这是由于框架设计中的一个基本缺陷.

搜索引擎试图为用户提供有用的链接文件。许多框架内容文档在直接访问时很难使用(超出其预期框架集),因此如果进行搜索,几乎没有什么好处引擎提供到它们的链接。因此,许多搜索引擎完全忽略框架,继续搜索为更有用的(非框架)文档编制索引。

搜索引擎将为您的<无框架>内容,以及通过您的<无框架>内容。当直接从搜索引擎访问时,此类内容应该很有用链接。

另请参阅

目录-完整FAQ(HTML)-整个常见问题解答(文本)
上一节-下一节