得到有关这方面的矛盾信息,希望它们不是。 我无法想象对它的支持会停止,因为有无数的网站使用它们。
其他一些问题:
答案 0 :(得分:74)
HTML 5中仍然支持<iframe>
,所以我认为这不会在不久的将来发生变化。
回答您的其他问题:
<iframe>
s(一般来说是框架)大部分时间都不是用户友好的:
<div>
要明确:我在谈论<iframe>
作为界面元素。不是用于加载其他内容的隐藏元素,例如谷歌邮件。
答案 1 :(得分:49)
在我的意见中,W3C从严格的HTML和XHTML文档类型中倾覆了iframe。从理论上讲,您可以使用<object>
元素将外来对象添加到文档中,但浏览器的差异和限制使得这对许多开发人员来说都是不可能的。借助更加实用的HTML 5(仍然是草稿),iframe又回来了,甚至还有两个新属性:seamless
和有趣的sandbox
。
答案 2 :(得分:23)
使用iframe的充分理由是:
答案 3 :(得分:22)
IFrame尚未过时,但使用它们的原因很少见。
使用iframe的原因:
我还会回答说,没有必要删除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上运行。不要这样做。