为什么开发人员讨厌iframe?

Amr*_*rhy 52 html iframe

可能重复:
iframe被认为是"不良做法"吗?

在与Web开发人员合作时,我总是从他们那里听到使用iframe是我们必须尽可能避免的事情,并且有些人说这是坏事,烦人并且会产生很多问题.

另外,当我告诉我以前的老板"不是开发人员"有一天我会使用iframe时,他看着我作为一个糟糕的开发者:)

我想知道的是,iframe在网络开发方面的历史非常糟糕吗?

这是一场灾难吗?

在某些情况下,我发现使用iframe是必须的,这说明我是一个糟糕的开发者?

或者所有这些都是因为在开发过程中我们必须注意一些安全问题而难以处理?

如果你讨厌它,请列出你的分数,如果我的思路方式错误,请纠正我.

Chr*_*oph 60

iframe可能有类似框架和不小心使用的问题XMLHttpRequest:它们打破了每个URL的一个文档范例,这对于网络的正常运行至关重要(想想书签,深层链接,搜索引擎......).

如果您正在创建Web应用程序,请使用您想要的任何技术(包括框架,闪存,小程序,等等).如果您正在创建一个实际的信息性网页,请坚持使用无框架HTML,CSS和不引人注目的JavaScripts,并记住该页面仍然可以在禁用脚本的情况下使用.

  • 也许我在这里稍稍跳了一下枪,但我认为现在要求你的用户使用JS是可以的.用户是否愿意错过Google地图?可能有静态版本,但能够用鼠标平移和缩放确实定义了GMaps exp. (11认同)
  • 这不依赖于你究竟是什么样的'iframe'吗?在iframe中包含整个页面的副作用与包含"小部件"或导航元素时产生的副作用完全不同. (6认同)
  • 当你构建一些当前页面CSS样式不能改变的东西时,iframe是必须的. (5认同)
  • @allyourcode:如果你看一下NoScript FF插件的流行程度,并根据我自己的浏览行为判断(默认情况下禁用js + flash),让你的网站在没有脚本的情况下可用是不合理的; 你无论如何都要为搜索引擎占用... (4认同)
  • ^典型的MS Developer ..从不关心并试图了解设计标准:D (3认同)
  • 我同意这一点.RIA将成为JavaScript重量级人物.传统意义上的网页应该关闭JS. (2认同)

Emi*_*l H 20

正如诺斯雷德娜所说,这可能是因为人们将它们与框架混淆,实际上有很多有效的反对框架的论据.其中一些不适用于iframe,但其中一些也是如此.

最引人注目的问题可能是深度链接问题:iframe确实受到这种影响的程度低于帧,但如果你允许用户在iframe中的不同页面之间导航,那将是一个问题.还有一些可用性问题需要注意.最常见的考试是双滚动条,我个人觉得非常讨厌.

我倾向于避免使用iframe,主要是因为我觉得它是一个不优雅的解决方案.我发现当我真正坐下来思考它时,几乎总有一个更好的解决方案.尽管如此,我也相信他们有一席之地.这是网络世界的转向:仅仅因为它有被滥用的历史,它已成为不应该被使用的共识.事实并非如此,但我相信你在使用iframe之前应该三思而后行.


mar*_*rcc 15

我想补充说,大多数时候,iframe也没有帮助SEO页面.Googlebot不会在页面上放置iframe的内容.


Phi*_*ert 9

有一种情况是(几乎)需要iframe:当iframe的内容位于不同的域中时,您必须执行身份验证或检查绑定到该域的cookie.它实际上防止了安全问题,而不是创建它们.

例如,如果您正在编写一种可以在任何网站上使用的插件,但插件必须在另一个域上进行身份验证,则可以创建一个在外部域上运行和验证的无缝iframe.


Nos*_*dna 8

我认为人们会将iframe与HTML框架混淆,并且框架被普遍鄙视.

人们一直使用iframe,甚至没有意识到.如果我没记错的话,TinyMCE使用iFrames.


ars*_*ars 8

一个原因是安全性 - iframe注入攻击很常见.有关说明,请参阅此Ars Technica页面:

http://arstechnica.com/security/news/2008/03/ongoing-iframe-attack-proving-difficult-to-kill.ars

另一个页面总结了一些漏洞(我不知道其中有多少对当前的浏览器有效,但文章不是那么老):

http://www.thespanner.co.uk/2007/10/24/iframes-security-summary/

另一方面,它们支持跨域通信,并且通常被"ajaxy"webapps使用:

http://softwareas.com/cross-domain-communication-with-iframes


小智 5

Iframes 用于构建 Web 应用程序没有任何问题。它们允许将目标内容与内存封装相结合。有多少人构建了一些漂亮的 javascript ajax 小东西,当他们忘记并将最新的 Jlibrary 上传到他们的父页面或一些 DIV 加载的内容时,这些东西完全爆炸了?大多数其他问题都围绕 SEO,这仅在您确实想窃取其他人的内容时才重要,无论如何,这很愚蠢。iframe 为您提供封装内存和跨多个站点共享精心设计的页面的能力。尽管您相信很多人会相信,Iframe 和/或它们的等价物将存在很长时间。