IFrame(HTML)是否已过时?

Pet*_*ter 85 html iframe obsolete

得到相互矛盾的信息,希望他们不是.我无法想象它的支持会停止,因为很多网站都使用它们.

关于此的一些其他问题:

  1. 他们为什么要淘汰这个标签?
  2. 它的替代品吗?

Kor*_*tor 75

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

回答你的其他问题:

  1. <iframe>s(通常为框架)大多数时候不是用户友好的:
    • 它们不允许通过URL轻松访问框架中的内容(至少不丢失框架外的内容).
    • 大多数"技术恐惧症"用户都被框架所激怒.
    • 据我所知,他们渲染浏览器的速度较慢
  2. 替代方案包括动态页面生成(SSI,PHP,Rails等)和使用JavaScript/AJAX来改变例如a的内容 <div>

要明确:我所说的<iframe>是一个界面元素.不是用于加载其他东西的隐藏元素,例如Google Mail.

  • +1表示Google正在使用iframe进行高度专业化的目的. (29认同)

Dav*_*lar 51

在我看来,W3C从严格的HTML和XHTML文档类型中倾销了iframe.从理论上讲,您可以使用该<object>元素将外来对象添加到文档中,但浏览器的差异和限制使得许多开发人员无法启动它.随着更加务实的HTML 5(仍然是草稿),iframe又回来了,甚至有两个新的属性:seamless和有趣的sandbox.

  • 更新:semless 属性已从 html5 中删除。请参阅:https://caniuse.com/#feat=iframe-seamless (2认同)

Thi*_*ker 24

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

使用iframe的充分理由是:

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

  • altCognito:AdWords使用的是iframe,而不是我:)我并不是说将adword iframe放到另一个iframe中. (36认同)
  • ***不要使用iframe作为adwords,这违反了TOS.***http://www.scribd.com/doc/97655/15-Common-Mistakes-by-Google-Adsense-Publishers-that-Violate-Terms-of-Service (33认同)
  • 我知道这是一个常见的错误(因此所有的文章),所以我想标记它,以确保人们理解你在说什么. (7认同)
  • 在包含必须从另一个域提供的复杂内容时,必须使用iframe,并且不得使用当前页面的CSS或JS代码进行操作. (5认同)
  • 你所谈论的内容与iframe无关.Point is - 您使用iframe引入嵌套的外部浏览上下文.您不要将它用于"页面布局".如果我需要一个嵌套的浏览上下文 - 我将如何使用"好的CSS布局"代替?这没有意义. (4认同)

cgp*_*cgp 23

IFrame不会过时,但使用它们的原因很少见.

使用iframe的原因:

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

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


Gay*_*yle 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>
Run Code Online (Sandbox Code Playgroud)

变成了:

<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>
Run Code Online (Sandbox Code Playgroud)

但是对象不是一个合适的替代品,以满足只能打印页面的PDF部分的要求.

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

jQuery("#confirmed_pdf").contentWindow.print();
Run Code Online (Sandbox Code Playgroud)

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

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


Joh*_*ley 7

IFrame与AJAX一起使用很多.例如,GMail使用九个隐藏的IFrame,我相信.

  • 我算五个iframe.一个不是隐藏的,事实上,其中一个几乎是整个视图.IFrame通常不与Ajax一起使用(无论如何都不在任何主要框架中).Gmail正在使用iframe,例如:历史记录跟踪,声音(奇数)和某种画布绘图. (5认同)

scu*_*ffe 7

IFrame没有死,但Frameset/Frames正在死亡.

IE(IE7/IE8)的最后两个版本中,放大帧(而非IFrames)已经产生了灾难性的结果.

无论如何使用IFrame,但IMHO保持清晰的帧集/帧.


Jos*_*ody 5

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


Cru*_*han 5

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

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

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

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


小智 5

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

在Ajax中,<div> s通常是更合适的容器.在某些地方,如果<iframe>支持,将外部内容作为您自己网站的一部分传递的活动是不合适的.

我的团队前几天使用<iframe>作为让用户访问其HTML电子邮件历史记录的理想方式 - 电子邮件是完整的<html>页面,我们希望将这些页面轻松插入到我们的Web模板中.<iframe> s非常适合呈现数据]'.

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