为什么在HTML5中弃用了框架,但在iFrame中却弃用了框架?


67

为什么在HTML5中弃用了框架,但在iFrame中却弃用了框架?毕竟,两者之间几乎没有区别。在许多情况下,使用它们中的任何一个都会给出相同的输出(如果我错了,请原谅)?



感谢您提供的链接,但是两者之间的小区别是iframe并没有被弃用。

1
因为框架从一开始就是一个糟糕的主意,但是iframe确实有一些合法的用例?
GordonM 2015年

Answers:


81

您的帖子中有一些误解。首先,frameand frameset元素在HTML5中并未被弃用,它们已经过时(即,它们已被完全删除)。

其次,frameframeset元素与iframe元素不同,也不提供相同的输出:

  • frameset元素代替页面中的body元素,以包括用于网页的其他文档模型:它们不利于可用性和可访问性,并且它们要实现的目标已完全被CSS和无处不在的服务器端开发所取代。

  • iframe元素,而另一方面,不替代页面的主体。它充当将新的浏览上下文嵌入内容块中的一种手段。它没有与框架集模型相同的可用性或可访问性问题,并且几乎在需要包含嵌入式浏览上下文的任何地方使用(小工具是最多产的示例)。1个

iframeHTML5中也需要在它可以附加功能沙盒,允许父文档来决定什么被在它执行。当嵌入不受信任的内容时,这可以为父文档(和父文档的访问者)提供某种程度的安全性。


笔记

注1:object元素具有一定程度的重叠iframe元素,但它有一个不同的内容模型(主要用于插件),有自己的一套警告,并没有沙箱属性的iframe元素了。


8
为什么框架集元素不利于“可用性”和“可访问性”,而iframe元素却不利?
meriton'4

18
@meriton框架集由多个具有相同优先级的文档构成一个页面:这给屏幕阅读器带来了挑战,这些阅读器在任何特定时间都不知道要关注哪个文档。另一方面,iframe元素只是简单地嵌入到单个页面中:与嵌入图像没有什么不同。

9
屏幕阅读器面临的挑战:与我交谈的盲人所有人都说,他们希望将导航卡在一个单独的框架(而不是iFrame)中,因为他们可以忽略它,只在需要时才将其读取。屏幕阅读器的真正罪魁祸首是Javascript和AJAX,这使得当前的屏幕阅读器完全无法使用页面(嗯,我的信息大约有10个月的历史了)。我在屏幕阅读器上的个人经验支持这一点。
GlenPeterson

4
我一直在想,是否经常在2005年经常引用的可访问性断言中进行更新。感谢对此的异议。
Erik Reppen 2013年

1
@GlenPeterson通过使用CSS将块元素固定在视口中,可以实现没有框架元素的相同效果。如果您想要这种导航,那应该怎么做。这更有意义。
netrox 2014年

8

框架(框架集)充当文档。它被删除,因为它破坏了HTML文档的结构和导航。例如。您在一个框架中有链接,在另一框架中有内容,您无法在新窗口中打开该页面的链接,也无法链接至特定的子页面,等等。

另一方面,如果使用正确,iframe不会破坏任何内容,因为它们是用于沙盒内容(例如广告)的。


7

框架集的使用方式经常违反Web的基本原理-每个文档都有一个URL。这会导致链接,书签,搜索引擎等出现问题。

框架集的典型用法是在顶部带有徽标或标题的框架,在侧面带有菜单的框架以及内容框架。但是搜索引擎会为单个页面编制索引,因此当您在Google中找到某个页面时,它将直接链接到内容页面而没有框架集,因此您将失去导航。链接和书签的问题是您通常希望在框架集中链接或添加书签到特定的内容页面,而又不会丢失框架本身。这不是简单的方法。

框架集之所以开始流行的原因是因为它们允许静态定位的标题和带有滚动内容区域的菜单。如今,使用CSS可以轻松实现这一目标。此外,框架使您可以在多个页面上使用徽标和菜单之类的常见元素,而无需使用任何服务器端编码。在服务器端编码乏味且易于出错(即CGI脚本)并且许多主机根本不允许服务器端脚本的时代,这是一个优势。如今,借助内容管理系统(CMS)和更好的服务器端平台,可以在服务器端更好地解决这一问题。

因此,使用框架集基本上没有任何好处,只有很多问题。

的IFrame 可以被使用的使用框架集以同样的方式,在这种情况下,他们也可能导致同样的问题。但是,iframe也有许多合法用途,不会导致相同的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.