【发布时间】:2010-10-19 20:09:22
【问题描述】:
收到关于此的矛盾信息,希望不是。 我无法想象对它的支持会停止,因为有无数网站在使用它们。
关于此的一些其他问题:
- 他们为什么要逐步淘汰这个标签?
- 有什么替代方案吗?
【问题讨论】:
-
这有什么更新吗?这个问题在2009年被问及回答;现在是 2020 年。
收到关于此的矛盾信息,希望不是。 我无法想象对它的支持会停止,因为有无数网站在使用它们。
关于此的一些其他问题:
【问题讨论】:
IFrame 并没有过时,但使用它们的原因很少见。
使用 iframe 的原因:
我还要回答说没有必要删除 iframe,它是一个必需的标签,并且会存在一段时间。
【讨论】:
AJAX 经常使用 IFrame。以 GMail 为例,我相信它使用了九个隐藏的 IFrame。
【讨论】:
HTML 5 中仍然支持<iframe>,所以我认为这在不久的将来不会改变。
回答您的其他问题:
<iframe>s(通常作为框架)大多数时候对用户不友好:
<div>
明确一点:我说的是<iframe> 作为一个界面元素。不是用于加载其他内容的隐藏元素,例如谷歌邮件可以。
【讨论】:
iframe 已过时用于页面布局。永远不要使用它们来代替良好的 CSS 布局,即使是基于表格的布局也更好。
使用 iframe 的充分理由是:
【讨论】:
在我以前的公司,我们提供了一个托管应用程序,客户可以将其集成到他们自己的网站中。有时,他们会使用 IFrame 来执行此操作,将我们托管的页面融入他们现有的设计中。有时这甚至可以无缝完成(即 IFrame 没有边框或滚动条,它看起来就像页面的一部分)。我认为这是对标签的一种很好的利用。
【讨论】:
它们在某些情况下可能非常有用,但它们是有限的。尤其是跨多个站点嵌入通用功能。
例如,我有一个客户,他经营着许多苏格兰商品电子商务网站。作为其中的一部分,我们开发了几个简单的应用程序,可以根据您的姓氏或您选择的格子呢(如果您愿意,可以傻笑,但格子呢每年对我们的经济价值 7 亿美元)来定位可能的氏族名称。这背后的数据库非常大(核心名称和格子表中有近一万行)并且相当定期更新。
因此,我们将应用程序设置为在一个网站上运行,然后使用 iframe 将这些应用程序嵌入到我们的其他网站中,从而实现简单的 javascript 参数传递,这样我们就可以将格子呢或部落的选择与嵌入网站上的功能集成在一起。 iframe 设置为无边框,因此对最终用户来说是完全无缝的。
当然还有其他方法可以做到这一点,但 iframe 的使用既简单又可靠。而且它肯定不会过时。
【讨论】:
IFrames 没有死,但 Frameset/Frames 正在死。
在 IE (IE7/IE8) 的最后 2 个版本中,放大 Frames(不是 IFrames)造成了灾难性的后果。
请务必使用 IFrame,但恕我直言,请不要使用 Framesets/Frames。
【讨论】:
在我的意见中,W3C 急于从 Strict HTML 和 XHTML 文档类型中转储 iframe。从理论上讲,您可以使用<object> 元素将外来对象添加到您的文档中,但是浏览器的差异和限制使得这对许多开发人员来说是不可能的。随着更加实用的 HTML 5(仍然是草案),iframe 又回来了,甚至还有两个新属性:seamless 和有趣的sandbox。
【讨论】:
Google 小工具规范目前依赖 iframe:http://code.google.com/apis/gadgets/docs/spec.html
目前,它们是为从多个域/提供商提取的 javascript 应用程序提供隔离的唯一简单方法。
人们从第三方嵌入到其网站的许多小部件也使用 iframe。
虽然 iframe 确实有其缺点,但 iframe 为网络上的常见问题提供了实用的解决方案。我不得不猜测他们会在未来一段时间内出现。
【讨论】:
我在一家公司工作,该公司将框架用于下拉菜单、列表、内容块等所有内容,以涵盖 .net 网络表单的复杂性。该应用程序非常慢,只能在 IE 上运行。不要这样做。
【讨论】:
课程用马......
在 Ajax 中,
【讨论】:
合规性和安全性问题也会促使您使用 iframe;购物车是一种流行的基于 IFrame 的实现,当您希望在视觉上将购物车合并为某些网页的一部分而不承担支付处理方面的全部责任时。
我们通常会提供一个 iframe 来集成我们的电子商务产品和客户,例如它的统包性。
【讨论】:
我看到很多论坛都建议使用 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>
但是 Object 不是一个合适的替代品来满足只能打印页面的 PDF 部分的要求。
一个 IFrame 就像它自己在页面中的窗口(基本上是一个窗口中的窗口),一旦你得到窗口对象,你就可以在它上面调用 .print() ,比如:
jQuery("#confirmed_pdf").contentWindow.print();
IFrame 有一个 contentWindow 属性,这使得只打印该部分成为可能。 Object 没有 contentWindow 属性,因此无法仅打印页面的部分。
因此,如果您只是使用 IFrame 来显示某些内容,似乎可以使用其他标签(如 Object)来代替。但是如果您需要以某种方式与 IFrame 的内容进行交互,那么 IFrame 可能是必需的。
【讨论】: