为什么在HTML5中弃用了框架,但在iFrame中却弃用了框架?毕竟,两者之间几乎没有区别。在许多情况下,使用它们中的任何一个都会给出相同的输出(如果我错了,请原谅)?
为什么在HTML5中弃用了框架,但在iFrame中却弃用了框架?毕竟,两者之间几乎没有区别。在许多情况下,使用它们中的任何一个都会给出相同的输出(如果我错了,请原谅)?
Answers:
您的帖子中有一些误解。首先,frame
and frameset
元素在HTML5中并未被弃用,它们已经过时(即,它们已被完全删除)。
其次,frame
和frameset
元素与iframe
元素不同,也不提供相同的输出:
该frameset
元素代替页面中的body元素,以包括用于网页的其他文档模型:它们不利于可用性和可访问性,并且它们要实现的目标已完全被CSS和无处不在的服务器端开发所取代。
的iframe
元素,而另一方面,不替代页面的主体。它充当将新的浏览上下文嵌入内容块中的一种手段。它没有与框架集模型相同的可用性或可访问性问题,并且几乎在需要包含嵌入式浏览上下文的任何地方使用(小工具是最多产的示例)。1个
在iframe
HTML5中也需要在它可以附加功能沙盒,允许父文档来决定什么被在它执行。当嵌入不受信任的内容时,这可以为父文档(和父文档的访问者)提供某种程度的安全性。
注1:该object
元素具有一定程度的重叠iframe
元素,但它有一个不同的内容模型(主要用于插件),有自己的一套警告,并没有沙箱属性的iframe
元素了。
框架集的使用方式经常违反Web的基本原理-每个文档都有一个URL。这会导致链接,书签,搜索引擎等出现问题。
框架集的典型用法是在顶部带有徽标或标题的框架,在侧面带有菜单的框架以及内容框架。但是搜索引擎会为单个页面编制索引,因此当您在Google中找到某个页面时,它将直接链接到内容页面而没有框架集,因此您将失去导航。链接和书签的问题是您通常希望在框架集中链接或添加书签到特定的内容页面,而又不会丢失框架本身。这不是简单的方法。
框架集之所以开始流行的原因是因为它们允许静态定位的标题和带有滚动内容区域的菜单。如今,使用CSS可以轻松实现这一目标。此外,框架使您可以在多个页面上使用徽标和菜单之类的常见元素,而无需使用任何服务器端编码。在服务器端编码乏味且易于出错(即CGI脚本)并且许多主机根本不允许服务器端脚本的时代,这是一个优势。如今,借助内容管理系统(CMS)和更好的服务器端平台,可以在服务器端更好地解决这一问题。
因此,使用框架集基本上没有任何好处,只有很多问题。
的IFrame 可以被使用的使用框架集以同样的方式,在这种情况下,他们也可能导致同样的问题。但是,iframe也有许多合法用途,不会导致相同的问题。