代码之家  ›  专栏  ›  技术社区  ›  Peter Booster

iframes(html)是否已过时?[关闭]

  •  81
  • Peter Booster  · 技术社区  · 15 年前

    关于这一点得到了矛盾的信息,希望他们没有。 我无法想象对它的支持会停止,因为有无数的网站使用它们。

    关于这方面的其他一些问题:

    1. 他们为什么要逐步淘汰这个标签?
    2. 有其他选择吗?
    14 回复  |  直到 11 年前
        1
  •  49
  •   David Kolar    15 年前

    在我的 意见 W3C在从严格的HTML和XHTML文档类型中转储iframes时大发雷霆。理论上你会用 <object> 元素添加外来对象到文档中,但浏览器的差异和限制使许多开发人员无法使用它。使用更加实用的HTML5(它仍然是草稿),iframes又回来了,甚至有两个新属性: seamless 以及有趣的 sandbox .

        2
  •  74
  •   Koraktor    11 年前

    支持 <iframe> 在HTML5中仍然存在,所以我认为这在不久的将来不会改变。

    回答其他问题:

    1. <iFrAME> S(一般为帧)大多数时间不便于用户使用:
      • 它们不允许通过URL轻松访问框架中的内容(至少不会丢失框架外的内容)。
      • 大多数 “技术爱好者” 用户对框架感到恼火。
      • 据我所知,它们在浏览器中的渲染速度较慢
    2. 替代方法包括动态页面生成(ssi、php、rails等)和使用javascript/ajax更改 <div>

    说清楚:我说的是 <iFrAME> 作为接口元素。不是用于加载其他内容(如google mail)的隐藏元素。

        3
  •  23
  •   Thinker    13 年前

    iFrAMES 过时了 用于页面布局。不要用它们代替好的CSS布局,即使是基于表的布局也更好。

    使用iframes的充分理由是:

    • 广告 例如:adwords使用这种技术,它很好地进行封装-ad css不会破坏您的页面。
    • 隐藏的IFRAME :它可以用于数百种可用的东西,如跟踪、Ajax替代等。
        4
  •  22
  •   cgp    15 年前

    iframes不是过时的,但是使用它们的原因很少。

    使用iframes的原因:

    • 它可以很好地将其他人的东西与其他领域隔离开来,但它不能顺利集成。(样式表、javascript等…)
    • 与使用嵌入标记相比,通过iframe集成多媒体有时更容易。
    • 真的,像Gmail这样的专门案例,他们将它用于声音和历史管理。

    我也会回答说,没有必要删除iframes,这是一个必要的标签,将在周围一段时间。

        5
  •  12
  •   Christian - Reinstate Monica C    12 年前

    我见过很多论坛建议用object标签代替iframe,这在大多数情况下可能有效。

    例如,我有一个PDF显示在一个iframe中(因为除了PDF之外,还有其他东西需要显示在页面上),并且能够让它使用对象显示良好。

    什么是:

    <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类似于页面中自己的窗口(基本上是窗口中的窗口),一旦获得了window对象,就可以对其调用.print(),比如:

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

    iframe有一个ContentWindow属性,这使得只打印该部分成为可能。对象没有ContentWindow属性,因此无法只打印页面的部分。

    所以,如果您只是使用iframe来显示某些内容,那么可以使用其他的标记,比如object。但是,如果您需要以某种方式与iframe的内容交互,那么iframe可能是必需的。

        6
  •  7
  •   John Topley    15 年前

    iframes在Ajax中经常使用。例如,Gmail使用了九个我认为隐藏的iframes。

        7
  •  7
  •   scunliffe    15 年前

    iFrAMES 不是死了,但是 框架/框架 正在死去。

    工业工程 (IE7/IE8)放大帧(而不是iframes)造成了灾难性的结果。

    无论如何,使用iframes,但imho要远离frameset/frames。

        8
  •  5
  •   Joshua Carmody    15 年前

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

        9
  •  5
  •   Cruachan    15 年前

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

    例如,我有一个客户,他经营许多苏格兰商品电子商务网站。作为其中的一部分,我们开发了两个简单的应用程序,从您的姓氏或您选择的鞑靼人中找到可能的姓氏(如果您愿意,可以咯咯笑,但鞑靼人每年为我们的经济创造7亿美元的价值)。它背后的数据库非常大(核心名称和鞑靼人表中有近一万行),并且相当定期地更新。

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

    当然,还有其他的方法可以做到这一点,但是iframe的使用是简单而健壮的。它当然不会过时。

        10
  •  5
  •   tsuchan    14 年前

    马的课程…<iframe>s和其他东西一样…为了正确的目的,他们是正确的工具;为了错误的目的,他们是一个丑陋的黑客,或者更糟。

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

    我的团队在前几天使用了一个<iframe>作为一种理想的方式,允许用户访问他们的HTML电子邮件历史记录-电子邮件是完整的<html>页,我们希望可以轻松插入到我们的Web模板中。<iframe>s非常适合展示该数据]”。

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

        11
  •  4
  •   Jason    15 年前

    google gadget规范目前依赖于iframes: http://code.google.com/apis/gadgets/docs/spec.html

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

    另外,人们从第三方网站上嵌入的许多小部件都使用iframes。

    虽然它们确实有缺点,但是iframes提供了一个实用的解决方案来解决Web上的常见问题。我猜他们会在一段时间内出现。

        12
  •  2
  •   Valerion    15 年前

    我刚将一个站点从普通的框架集改为i frames,因为普通的框架不能满足我的需要。它对代码库的其余部分没有造成任何问题。

        13
  •  2
  •   quolo    13 年前

    法规遵从性和安全性问题也会促使您使用iframe;当您希望将购物车可视化地合并为某些网页的一部分而不承担付款处理方面的全部责任时,购物车是基于iframe的流行实现。

    我们通常会提供一个iframe来集成我们的电子商务产品和客户,比如它可以是怎样的交钥匙。

        14
  •  0
  •   Lovemossnot    14 年前

    我在一家公司工作,该公司使用从下拉菜单、列表、内容块等各种框架来覆盖.NET Web表单的复杂性。应用程序非常慢,只能在IE上运行。不要这样做。

    推荐文章