可能重复:
I帧被认为是“不好的做法”?
虽然与Web开发人员的工作,我总是听到他们在使用iframe的是我们必须避免,因为我们可以,有的说这是一件坏事,讨厌,使得很多的问题。
此外,当我告诉我以前的老板“不是开发商”有一天,我会用IFRAME,他看着我,一个坏的开发商:)
我想知道的,不具有的I帧一个非常坏的历史与Web开发?
它是一个灾难?
在某些情况下,我看到它是使用iframe的一绝,是说这意味着我是一个糟糕的开发者?
或全部是因为它很难对付,因为一些安全问题,我们必须采取有关,同时开发保健?
如果你恨它太或纠正我,如果我想错了方式,请列出您的观点。
Answer 1:
I帧可以有类似的问题,如帧和轻率使用XMLHttpRequest
:他们打破了一个文档每URL的范例,这对网络的正常运作必不可少的(想想书签,深层链接,搜索引擎,...) 。
如果你创建你想要的任何技术的Web应用程序,使用时(包括帧,闪光,小应用程序,无论$)。 如果要创建一个实际的,信息的网页,坚持无框HTML,CSS和JavaScript的unobstrusive并记住,该网页还应该禁用脚本可用。
Answer 2:
作为Nosredna说,这可能是因为人混淆他们与框架,实际上有很多的反对帧有效参数。 他们中的一些并不适用于I帧,但话又说回来他们中的一些。
最引人注目的这种问题很可能是深联:这是真的,I帧从这个遭受比帧程度较轻,但如果你让你的用户在iframe不同页面之间导航,这将是一个问题。 还有一对夫妇的,你必须要注意的可用性问题。 最常见的examble是双滚动条,我个人觉得难以置信恼人的。
我倾向于避免内部框架,主要是因为我觉得这是一个unelegant解决方案。 我发现,当我真正坐下来想一想,有几乎总是一个更好的解决方案。 尽管我也相信,有他们的地方。 这是网络世界的后藤:只是因为它有被滥用的历史了,它已经成为共识,认为它不应该永远使用。 这真的不是这里的情况,但我相信,你应该使用I帧之前三思而后行。
Answer 3:
我想补充一点, 大部分的时间 ,I帧不帮助页面的SEO两种。 Googlebot不会把页面上的iframe的内容。
Answer 4:
有一种情况是(几乎)所需的I帧一种情况:当iframe的内容是不同的领域,你必须进行身份验证或确认被绑定到该域的Cookie。 它实际上阻止他们创造的安全问题,而不是。
例如,如果你正在写的一种插件,可以在任何网站上使用,但该插件必须在另一个域进行验证,您可以创建,运行和验证在外部域的无缝iframe中。
Answer 5:
我认为人们混淆HTML框架内部框架,而框架是相当普遍鄙视。
人们使用iframe的所有的时间,甚至没有意识到这一点。 如果我没有记错,TinyMCE的iFrame中。
Answer 6:
原因之一是安全性 - 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
Answer 7:
一个问题是,他们有自己的页面的生命周期,从而主机和iframe孩子之间的交互是有限的(查询字符串,会话变量或JS)。 另一种方法是考虑使用滚动股利。
另一个问题是打印。 的iframe的输出(或就此而言滚动DIV)可以是不可预知的,不同的浏览器之间变化很大。
Answer 8:
没有什么错与对I帧构建Web应用程序。 它们允许有针对性的内容与内存封装的组合。 有人做多少次建立一个完全炸毁块时,他们忘了,并上载最新的Jlibrary自己的父页面或某个DIV加载内容的一些华而不实的一些JavaScript AJAX的事情吗? 大多数其他问题围绕SEO只,如果你真的想要窃取别人的内容,这是非常愚蠢的怎样都无所谓。 I帧给你封装的内存,并分享在多个站点以及页面设计的能力。 尽管许多东西会让你相信,内部框架和或它们的等价物将是绕了很长一段时间。
Answer 9:
他们拒绝的原因之一是因为他们天生就慢。 由当时的iframe开始加载其主页已在装载管道的高级阶段。 I帧和活泼的浏览几乎不可能合并。
Answer 10:
我想的IFrame有自己的位置。 我不会用他们在前端/面向公众的Web站点由于与搜索引擎优化等对于内部/后端web应用程序,我认为,当你需要一个特定部分的造型隔离它们是有用的问题从页面的其余部分,例如报表查看器或HTML编辑器,从父页继承的样式可能会导致一个问题,如果所有的内容是一个文件内。 我2C ...
Answer 11:
今天的I帧有,因为在过去的浏览器IFRAME支持的名声。 到VB.NET类似有一个坏名声由于VB6的历史。 我使用它们这几天在必要......只要记住,这是可能的,你现在已经和计划,然后每次到不行,并考虑到这一点。
Answer 12:
我猜是因为它违背了整个HTML的描述,内容+ CSS-做最视觉设计原教旨主义。 此外iframe的过度使用的性能,因为它使单独调用来获取框架废料。 如果你想想看AJAX基本上是一样的iframe,除了今天的时尚(可能不是在未来)。
安全明智的,它有点是有问题的,因为用户可以加载其他域总废话,甚至不知道。
Answer 13:
Answer 14:
因为他们可能会是困难,当涉及到安全的工作。 一个乖巧的,现代的浏览器不会让你在操纵在页面上的其他iFrame的元素的iFrame编写代码。 这可以使某些技术强硬,有时来实现。
Answer 15:
你不应该使用iframe的设计。 CSS做的方式更好的工作同样的事情,并允许有更多的自由度太大。
Answer 16:
这是不好的做法,并写好的懒办法(阅读:做客户想要的东西)的代码。 一种“IFRAME坏”在谷歌(不带引号)搜索带来了关于这个专题的许多论坛讨论。 如果你真的需要在外部内容带来,使用AJAX。 更重要的是,不要做它。
文章来源: Why developers hate iframes? [duplicate]