18. frameset邪恶吗

frameset曾经是构建多栏目网页的标准技术,被广泛使用,但是近年来已进越来越少见到它的踪影。在网上搜索一下,这个词更多的是与邪恶、如何代替、缺点这些主题联系在一起。frameset真的邪恶吗?
各种文章提到的缺点主要有以下几条:
1.      (尽管互联网技术飞速发展了这么多年)仍然存在少数浏览器不支持frameset。
除非是想建立像Google这样的网站和有信心和责任感让全世界的网民都访问到你所建的网站,否则这条理由在一级风力下也很难站得住脚。
2.      frameset不利于屏幕阅读器(就是为视觉障碍者阅读网页的软件)运行。
不得不说,西方的网页设计者的人权意识值得我们学习。当他们在倡导构建一个无障碍的互联网世界时,在考虑如何为色盲和视觉障碍的用户提供便利的时候,我们的网站还到处是闪闪发光、四处漂移的小图片。
3.      frameset不利于将某个frame里的页面加为书签。
这一点是比较接近于大多数用户需求的考虑。所以像MSDN这样的网站都已经弃用frameset,而使用其它技术来实现目录和内容网页的同步。
至于frameset的优点,也就是发明它的初衷,当然是将不同的网页组合到一个屏幕中,使得整个页面中负责不同功能的部分能够被分开设计、组合使用,方便整个系统的统一布局,减少浏览器和服务器之间的流量。
这些优点仍然有效,之所以出现取代frameset的潮流,就是因为出现了同样能够实现这些功能的新的开发技术。frameset可以看作是前端的模块化、组件化,随着Web开发的不断复杂,出现了服务器端的模块化、组件化的技术,比如ASP.NET和JSF。分别属于.NET和Java两大阵营的这两种技术都大大简化和方便了开发中的界面设计,通过自定义控件和模板页等技术,在服务器端实现了网页各个功能部分的组合复用。
基于JSF的XPages技术也可以通过自定义控件来实现以上目的,并且在最早随8.5.3的升级包推出的新Teamroom模版就是使用自定义控件来完成页面的布局。不过我仍然认为在每个页面上都预先叠放几层控件来实现统一布局,不仅增加了设计的复杂程度(特别是当在自定义控件内部进行编辑和设计还很不方便的情况下),而且加大了浏览器和服务器之间的流量。
综合以上的讨论,frameset仍然有存在的理由。唯一比较现实的影响是否采用它因素就是所开发的应用中的各个页面是否有被加为书签的必要。在Teamroom中,视图中的每一个文档都在当前窗口中打开,而如果采用《16. 如何在XPages中实现onload效果及在新窗口中打开视图链接》里的方案,每一个文档仍然有独立的地址,可以加为书签。剩下受影响的就是一级和二级菜单转到的各个frames里的不同页面。如果有需要,也仍然可以借助前端技术提供用户添加书签的功能并且在单个frame中的页面加载时打开整个frameset。
如果决定采用frameset,就会发现传统的Notes帧结构集(frameset)不能将XPage添加为某个帧的内容。而一个XPage在被传向浏览器时也会自动转换成为包含<head>和<body>标签的页面。为了构造一个frameset,只有在传统的Notes page设计元素中添加Pass-through的HTML。就像下面这个样例:

<frameset frameborder="1" rows="60,81%">
<frame frameborder="0" name="top" src=" top.xsp">
<frameset frameborder="1" cols="20%,80%">
<frame frameborder="0" name="left" src=" navigator.xsp">
<frame frameborder="0" name="right" src=" viewAttendance.xsp">
</frameset>
</frameset>

你可能感兴趣的:(18. frameset邪恶吗)