IFrame(HTML)是否已过时?

时间:2009-04-16 11:53:13

标签: html iframe obsolete

得到有关这方面的矛盾信息,希望它们不是。 我无法想象对它的支持会停止,因为有无数的网站使用它们。

其他一些问题:

  1. 他们为什么要逐步淘汰这个标签?
  2. 任何替代方案吗?

14 个答案:

答案 0 :(得分:74)

HTML 5中仍然支持<iframe>,所以我认为这不会在不久的将来发生变化。

回答您的其他问题:

  1. <iframe> s(一般来说是框架)大部分时间都不是用户友好的:
    • 他们不允许通过URL轻松访问框架中的内容(至少不会丢失框架外的内容)。
    • 大多数“technophobe”用户都被框架所激怒。
    • 据我所知,他们渲染浏览器的速度较慢
  2. 替代方案包括动态页面生成(SSI,PHP,Rails等),并使用JavaScript / AJAX来更改例如<div>
  3. 要明确:我在谈论<iframe>作为界面元素。不是用于加载其他内容的隐藏元素,例如谷歌邮件。

答案 1 :(得分:49)

在我的意见中,W3C从严格的HTML和XHTML文档类型中倾覆了iframe。从理论上讲,您可以使用<object>元素将外来对象添加到文档中,但浏览器的差异和限制使得这对许多开发人员来说都是不可能的。借助更加实用的HTML 5(仍然是草稿),iframe又回来了,甚至还有两个新属性:seamless和有趣的sandbox

答案 2 :(得分:23)

用于页面布局的 iframe 已过时。永远不要使用它们而不是好的CSS布局,即使基于表格的布局也更好。

使用iframe的充分理由是:

  • 广告:adwords例如使用此技术,它有利于封装 - 广告css不会破坏您的网页。
  • 隐藏的iframe :它可用于数百种可用的内容,例如跟踪,ajax替代等。

答案 3 :(得分:22)

IFrame尚未过时,但使用它们的原因很少见。

使用iframe的原因:

  • 从其他领域中隔离其他人的东西是很好的,但它没有顺利整合。 (样式表,javascript等......)
  • 有时可以通过iframe更轻松地集成多媒体,而不是使用embed标记。
  • 真的,非常专业的案例,例如gmail的案例,他们将它用于声音和历史管理。

我还会回答说,没有必要删除iframe,这是一个必需的标签,并且会存在一段时间。

答案 4 :(得分:12)

我见过很多论坛都建议将Object标签作为IFrame的替代品,这在大多数情况下都有效。

例如,我在IFrame中显示了一个PDF(因为除了PDF之外我们还需要在页面上显示其他内容)并且能够使用Object显示它。

是什么:

<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>

变成了:

<object id="confirmed_pdf" class="current_pdf" data="/prescriptions/show_pdf?id=123" type="application/pdf" height="570" width="480">
  <p>[Show this message if displaying the PDF did not work]</p>
</object>

但是,对象不适合填写只能打印页面PDF部分的要求。

IFrame就像它自己在页面中的窗口(基本上是一个窗口内的窗口),一旦你得到了窗口对象,就可以在它上面调用.print(),如:

jQuery("#confirmed_pdf").contentWindow.print();

IFrame有一个contentWindow属性,这就是只打印那部分的原因。对象没有contentWindow属性,因此无法仅打印页面的部分。

所以,看起来如果您只是使用IFrame来显示某些东西,那么还可以使用其他像Object这样的标签。但是如果您需要以某种方式与IFrame的内容进行交互,那么IFrame可能是必要的。

答案 5 :(得分:7)

IFrame与AJAX一起使用很多。例如,GMail使用我认为的九个隐藏的IFrame。

答案 6 :(得分:7)

IFrame 尚未消失,但框架集/框架正在消亡。

IE (IE7 / IE8)的最后两个版本中,放大帧(而不是IFrames)会产生灾难性的结果。

无论如何都要使用IFrame,但IMHO不要使用Framesets / Frames。

答案 7 :(得分:5)

在我以前的公司,我们提供了一个托管应用程序,客户可以将其集成到自己的网站中。有时,他们会使用IFrame执行此操作,将我们的托管页面安装到他们现有的设计中。有时这甚至是无缝完成的(即IFrame没有边框或滚动条,它只是看起来像页面的一部分)。我认为这是对标签的一种很好的用法。

答案 8 :(得分:5)

它们在某些情况下非常有用,但这些都是有限的。特别是在多个站点中嵌入通用功能。

例如,我有一个客户经营着许多苏格兰商品电子商务网站。作为其中的一部分,我们开发了几个简单的应用程序来查找您的姓氏或您选择的格子呢中的可能的氏族名称(如果您愿意,可以傻笑,但格子呢每年对我们的经济来说价值7亿美元)。这背后的数据库非常大(核心名称和格子表中有近万行)并且定期更新。

因此,我们将应用程序设置为在一个网站上运行,然后使用iframe将这些应用程序嵌入到我们的其他网站中,从而启用简单的javascript参数传递,这样我们就可以将嵌入网站上的格子呢或部落选择与功能集成。 iframe设置为noborder,因此它对最终用户来说似乎完全无缝。

当然还有其他方法可以做到这一点,但使用iframe简单而强大。它肯定不会过时。

答案 9 :(得分:5)

课程的马匹...&lt; iframe&gt; s就像其他任何东西......出于正确的目的,它们是正确的工具;出于错误的目的,他们是一个丑陋的黑客,或者更糟。

在Ajax中,&lt; div&gt; s通常是更合适的容器。在某些地方,由&lt; iframe&gt;支持,将外部内容作为您自己网站的一部分传递的活动是不合适的。

我的团队使用&lt; iframe&gt;前几天作为让用户访问其HTML电子邮件历史记录的理想方式 - 电子邮件已完成&lt; html&gt;我们想要轻松插入网页模板的页面。 &lt; iframe&gt; s非常适合呈现该数据]'。

另一方面,&lt; iframe&gt;几乎总是会在用户提交的内容中被删除或禁用,这些内容会输出回网站,因为在这种情况下,它们是一个主要的安全问题。

答案 10 :(得分:4)

Google小工具规范目前依赖于iframe:http://code.google.com/apis/gadgets/docs/spec.html

目前,它们是为从多个域/提供商提取的javascript应用程序提供隔离的唯一简单方法。

人们从第三方嵌入其网站的许多小部件也使用iframe。

虽然他们确实有自己的缺点,但iframe为网络上的常见问题提供了实用的解决方案。我不得不猜测它们将会存在一段时间。

答案 11 :(得分:2)

我刚刚将网站从普通的Frameset更改为Iframe,因为普通的框架无法满足我的需求。它没有引起其余代码库的问题。

答案 12 :(得分:2)

合规性和安全性问题也可以促使您使用Iframe;购物车是基于IFrame的流行实现,当您希望将购物车视觉地整合到某些网页中时,不会对付款处理方面承担全部责任。

我们通常会提供一个Iframe来集成我们的电子商务和客户,例如交钥匙。

答案 13 :(得分:0)

我为一家公司工作,该公司使用框架来处理所有内容,包括下拉菜单,列表,内容块等,以覆盖.net网络表单的复杂性。应用程序非常慢,只能在IE上运行。不要这样做。