代码之家  ›  专栏  ›  技术社区  ›  rvarcher

为什么我不应该使用HTML框架?[关闭]

  •  20
  • rvarcher  · 技术社区  · 15 年前

    我从1998年就没用过相框。它们看起来是一个坏主意,在我所有的开发中,我从来没有遇到过框架是正确的解决方案,甚至是一个像样的解决方案的情况。

    但是,我现在正在处理一个由另一个组编写的内部web应用程序,整个站点都构建在一个-header、左侧菜单、右侧内容-框架集中。

    例如,当VPN连接到我的网络时,我经常会收到一条“website.com/frames.html”的错误信息。当我在内部网络上时不会发生这种情况。

    其次,这款应用内置了电子邮件/消息系统。未读消息的数量在左侧菜单框中显示为“消息(3)”,但在我阅读消息时计数不会更新。开发人员告诉我,因为它在一个框架中,我需要右键单击菜单并“刷新”。真的吗????

    所以,我的编程相关问题是,你有什么理由不在网站中使用框架?

    8 回复  |  直到 15 年前
        1
  •  15
  •   IMSoP    11 年前

    尽管框架集在创建时解决了一个问题(更新“页面”的一部分,同时保留不更新的部分),但从一开始就在可用性方面受到了批评,因为它们破坏了浏览器的一般功能,例如:

    • 书签,复制和粘贴要共享的URL
    • 打印屏幕上显示的页面
    • 重新加载页面:由于URL通常没有更改,您通常会被带回到站点的主页或默认框架集;手动重新加载一些框架是可能的,但对用户来说并不明显
    • 后退和前进按钮不明确:撤消/重做最后一个帧更改,还是转到URL栏最后一次更改的时间?

    如果使用任何服务器端语言生成HTML,即使它提供的只是一个“服务器端包含”,那么避免框架集(包括每个页面上的相同内容)的最大负担也很容易解决。与框架集不同,服务器端include可以出现在页面的任何位置;使用服务器端脚本语言或模板系统构建站点也有其他明显的优势。

    在不重新加载整个内容的情况下更新页面的小区域仍然是一个优势,这可以通过AJAX实现。这有时会导致人们创建带有上述框架集所有问题的接口,但这很难成为支持框架集的论据。同样,使用设计良好的AJAX功能构建的站点可以实现框架集甚至都无法解决的问题。

        2
  •  10
  •   Simon Mourier    10 年前

    现在避免使用框架的一个很好的原因是,在HTML5中,它们已经被弃用: Chapter 11 Obsolete features

    11.2不合格特性

    以下列表中的元素完全过时,不能 作者使用:

    [...]

    框架

    框架集

    无框

    或者使用iframe和CSS,或者使用服务器端includes 生成合并了各种不变部分的完整页面。

        3
  •  8
  •   nbro kai    7 年前

    第一个原因?用户讨厌他们。

    即使它们在其他领域(代码分离、应用程序设计、速度等)提供了优势,它们也是用户界面的一部分。如果用户不批准,就不要使用它们。

        4
  •  7
  •   nbro kai    7 年前

    当你有一个静态的网站时,框架是非常有用的,例如,可以避免在所有页面中重复导航菜单。它还减少了页面的总大小。

    这两个论点现在都过时了:站点毫不犹豫地提供胖页面,而且大多数都是动态构建的,因此包括这样的导航部分(或状态等)没有问题。

    上面的“为什么”部分得到了很好的回答,部分原因是您自己的问题(您遇到了一个限制,尽管可以用一点JS覆盖它)。

        5
  •  6
  •   Peter Di Cecco    15 年前

    我不使用框架的首要原因是它们破坏了浏览器的书签(也称为收藏夹)功能。

    随着当今存在的技术,框架已经过时。但是如果您的遗留项目仍然使用它们,您可以使用一些ajax来更新消息。

        6
  •  4
  •   IconMatrix    11 年前

    仅仅因为手机iPad热潮并不意味着功能强大的全功能网站突然“过时”,那些决定淘汰框架的人似乎和那些从一开始就没有充分发掘自己潜力的抱怨者一样,或许他们是大型企业手机和平板电脑制造商的说客他们懒得为自己的小屏幕制作一个像样的支持框架的浏览器。

    诚然,iFrAMS可以处理简单的工作,比如滚动和/或在单个页面中显示独立的片段,我在自己的基于框架的网站中使用它们,但要让它们工作,站点本身的基础也是一场噩梦。相信我,我知道,因为我的网站是互联网上最复杂的基于框架集的网站之一,我一直在研究将其全部转换为iframe的利弊。噩梦是轻描淡写的。

    我已经能听到抱怨者说,“那你为什么一开始就这样建造它呢?”... 答案是:因为我不懒。B:因为一个基于框架的网站是一个基于信息的网站最具功能性、视觉吸引力和用户友好的格式,它有数百页的内容,不需要依赖于服务器。我的意思是除了外部广告外,所有的广告都可以直接从闪存上看到。不需要MySQL或PHP。

    以下是我遇到的一些问题:

    • 使用JavaScript可以很容易地处理对孤立页面的反对。
    • 关于书签的反对意见是无关紧要的,除非你全部不使用框架。
    • 可以使用“Add Bookmark”JavaScript函数处理特定于内容的书签
    • 关于SEO的反对很容易被XML站点地图和JavaScript处理。
    • 使用标准框架集可以更轻松、更可靠地布置动态大小的框架。
    • 使用标准框架集更容易从外部框架定位和替换嵌套框架集。
    • 内部脚本,如JavaScript搜索和对cookies来说过于复杂的非服务器相关购物车,似乎不可能使用iframe,或者如果它们是,让它们工作起来比使用标准框架要麻烦得多。

    尽管如此,我还是喜欢I frames的单页面吸引力,当它们能像现在的标准框架一样方便地为我的站点做同样的事情时,我会迁移。与此同时,这种关于他们“过时”的胡说八道,和他们多年来强加给我们的另一种所谓“升级”一样令人不安,他们一路都没想。

    那么,对于是否使用框架集的问题,这一切归结为什么呢?答案是,这一切都取决于你希望你的网站做什么,以及它将主要在什么平台上被浏览。在某些情况下,如果没有框架或iFrame集成,使多页网站正常工作就变得不切实际。不过,如果你只是创建一个基本的个人资料页面,显示良好的手机或平板电脑,不必麻烦框架集。

        7
  •  2
  •   Nosredna    15 年前

    他们几乎总是惹人生气。你还需要什么?

        8
  •  2
  •   John Demetriou    10 年前

    相框在某些场合非常有用。如果您正在创建一个仅用于阅读的本地网页,不涉及交互,并且该网站不会在internet上公开,则不使用框架的所有原因都将被删除。例如,一个仅用html开发的应用程序的用户手册,框架对于以简单易编码的方式在左侧保留目录非常有用。另外,如果您在网站内有正确的导航,那么返回按钮的模糊性将被完全消除