一、前言
随着HTML帧的引入,隐藏帧(hidden frame)技术也应运而生了。该技术后面的基本想法是创建一个帧集,其中包含用于客户端—服务器通信的隐藏帧。可以通过将帧的宽度或高度设置为0像素来隐藏一个帧,以使其不显示。尽管一些早期的浏览器(诸如Netscape 4)不能够完全隐藏帧,经常会留下一些明显的帧边框,但该技术还是广泛地为开发人员所采用。
二、使用
网页分帧(Frame)通常用来进行主页版面的组织和编排,通过把帧的高度(对于上、下分帧)设为 0 的办法来把帧隐藏起来的,隐藏以后的帧里面照样可以放置 html 文件,但在网页的整体版面上并不显示出来。
隐藏帧的用法通常有2种:
- 保存内部变量的值。
- 在隐藏帧中放置音乐、图片等文件,后台下载,使得页面浏览比较流畅。
我们通常使用第一种用法。
三、隐藏帧技术的优点和缺点
现在,你已经对使用隐藏帧所实现的强大功能有所了解了,我们将讨论它的实用性。正如前面所说的,该技术已经存在多年,并且仍然在许多Ajax应用中使用。 使用隐藏帧的一个最大理由之一是它可以维护浏览器的历史,使用户仍然能够使用浏览器上的后退和前进按钮。浏览器由于并不知道隐藏帧实际上被隐藏了,但对于其所发出的请求仍然是记录在案的。然而,Ajax应用程序的主页面却没有修改,在隐藏帧中的修改意味着后退和前进按钮将依据该隐藏帧的访问历史而非主页面而变化。这也是为什么Gmail和 Maps仍然使用该技术的理由。 注意,iframe并非一直会存储浏览器的历史记录。尽管IE始终会存储iframe的历史记录,但Firefox只对使用HTML定义(也就是不包括使用JavaScript动态创建)的iframe保存历史记录。Safari从不为iframe保存历史记录,不管它们是如何包含在该页面中的。 隐藏帧技术不利的一面是,对其背后发生的事了解甚少。它完全依赖于返回的正确页面。本节的例子都存在相同的问题:如果隐藏帧的页面载入失败,并不会向用户提示出错消息;主页面将继续等待直到调用适当的JavaScript函数。必须通过设置一个较长周期(可能是5分钟)的超时时间,然后如果页面仍然没有成功载入则显示一条消息,以给用户一个安慰。但这一切都只是一个变通方法,最主要的问题是,对于后台发生的HTTP请求缺乏充足的信息。幸运的,我们还有其他选择。