收到了关于此事的矛盾信息,希望这些信息不是真的。
对此还有一些额外的问题:
- 他们为什么要逐步淘汰这个标签?
- 有没有替代方案?
收到了关于此事的矛盾信息,希望这些信息不是真的。
对此还有一些额外的问题:
HTML5仍然支持<iframe>
,因此我认为这在不久的将来不会改变。
回答您的其他问题:
<iframe>
(以及框架一般)大多数情况下不够用户友好:
<div>
的内容。要明确:我谈论的是<iframe>
作为界面元素。不是用于加载其他内容的隐藏元素,例如Google Mail。
在我看来,W3C在从Strict HTML和XHTML doctype中删除iframes方面过早行动了。理论上,您可以使用元素将外部对象添加到您的文档中,但是浏览器的差异和限制使得许多开发人员无法启动此功能。随着更加务实的HTML 5(仍处于草案阶段),iframes又回来了,甚至还有两个新属性:seamless和引人注目的sandbox。
IFrames不过时,但使用它们的原因很少。
使用IFrames的原因:
我还要说的是,没有必要删除iframes,它是一个必需的标记,并且将持续存在一段时间。
Iframes(内嵌框架)已经过时,不应该用于页面布局。即使基于表格的布局也比使用iframes更好,应该使用良好的CSS布局。
使用iframes的好处有:
我看到过很多论坛建议使用Object标签替换IFrame,这在大多数情况下可能都有效。
例如,我有一个PDF文档显示在IFrame中(因为除了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();
< p >IFrame有一个contentWindow属性,这就是使只打印该部分成为可能的原因。 Object没有contentWindow属性,因此无法仅打印页面的<object>
部分。< /p>
因此,如果您只是使用IFrame来显示某些内容,那么可以使用其他标签,如Object。但是,如果您需要以某种方式与IFrame的内容进行交互,则可能需要使用IFrame。
IFrames经常与AJAX一起使用。例如,GMail使用了我相信有九个隐藏的IFrames。
IFrames并没有过时,但是Frameset/Frames正在逐渐淘汰。
在最近两个版本的IE(IE7/IE8)中,放大Frames(而不是IFrames)会导致灾难性的结果。
可以使用IFrames,但我个人认为应该避免使用Framesets/Frames。
在我的上家公司,我们提供了一个托管应用程序,客户可以将其集成到自己的网站中。有时,他们会使用IFrame来实现这一点,将我们的托管页面适应其现有设计。有时甚至可以无缝地完成(即IFrame没有边框或滚动条,它看起来就像页面的一部分)。我认为这是标签的良好使用。