iframe被认为是“不良做法”吗?

时间:2008-12-12 13:30:58

标签: html iframe standards

在某个地方,我发现使用iframe是'糟糕的做法'。

这是真的吗?使用它们的优点/缺点是什么?

11 个答案:

答案 0 :(得分:209)

与所有技术一样,它有起伏。如果您使用iframe来绕过正确开发的网站,那么当然这是不好的做法。但有时候iframe是可以接受的。

iframe的一个主要问题与书签和导航有关。如果您使用它只是在您的内容中嵌入一个页面,我认为这很好。这就是iframe的用途。

但是我看到iframe也被滥用了。它永远不应该被用作您网站的组成部分,而应该被用作网站内的一段内容。

通常,如果你可以在没有iframe的情况下完成,那么这是一个更好的选择。我相信这里的其他人可能会有更多的信息或更具体的例子,这一切都归结为你想要解决的问题。

话虽如此,如果您仅限于HTML并且无法访问PHP或ASP.NET等后端,有时候iframe是您唯一的选择。

答案 1 :(得分:72)

它们不是不好的做法,它们只是另一种工具,它们增加了灵活性。

用作标准页面元素......它们很好,因为它们是将内容分成几个页面的简单而可靠的方法。特别是对于用户生成的内容,将内部页面“沙箱化”为iframe可能很有用,因此较差的标记不会影响主页面。缺点是如果你引入多层滚动(一个用于浏览器,一个用于iframe),你的用户会感到沮丧。就像adzm所说,你不想使用iframe进行主导航,而是将它们视为与视频或其他媒体文件嵌入方式等效的文本/标记。

对于脚本背景事件,通常在隐藏的iframeXmlHttpRequest之间选择加载当前页面的内容。不同之处在于iframe会生成页面加载,因此您可以使用大多数浏览器在浏览器缓存中前后移动。请注意,在某些地方使用XmlHttpRequest的Google在某些情况下也会使用iframe来允许用户在浏览器历史记录中前后移动。

答案 2 :(得分:28)

在不了解其缺点的情况下使用它们是“不良做法”。 Adzm的帖子很好地总结了它们。

另一方面,gmail在后台大量使用iFrame,以获得一些更酷的功能(如自动文件上传)。如果您了解iFrames的局限性,我认为您不应该对使用它们感到任何疑虑。

答案 3 :(得分:17)

在很多情况下与他们合作过,我真的认为iframe是与goto语句相当的Web编程。也就是说,通常可以避免某些事情。在网站中,它们可能有点用处。然而,跨站点,除了最简单的内容之外,它们几乎总是一个坏主意。

考虑可能性......如果用于参数化内容,他们就创建了一个界面。在专业网站中,该界面需要SLA和版本管理 - 在急于上线时几乎总是被忽略。

如果用于活动内容 - 托管脚本的框架 - 则存在(不同的)跨域脚本限制。有些可能被黑客攻击,但很少持续。如果你的框架内容需要互动,那么在框架之外就很难做到。

如果与许可内容一起使用,则参与网站会因需要在主机之间移出授权信息而负担沉重。

因此,尽管在某个站点中有点用处,但它们还不适合mashup。您可以更好地查看真正的门户和portlet。更糟糕的是,他们是每个网络业余爱好者的宠儿 - 许多技术经理已经将他们作为许多问题的解决方案。事实上,他们创造了更多。

答案 4 :(得分:8)

iframes肯定会有人使用。你还怎么把天气网络小部件放在你的页面上?唯一的另一种方法是获取他们的XML并解析它,但当然你需要条件来抛出相关的天气图形...不值得,但如果你有时间则更清洁。

答案 5 :(得分:8)

根据我的经验,iframe的积极的一面是在调用第三方代码时,可能涉及调用一个调用a Document.write();命令的javascript。您可能知道,由于它的解析方式(DOM Parser等),不能异步调用这些命令。这方面的一个例子是http://sourceforge.net/projects/phpadsnew/我已经使用iframe来帮助加快我们的网站,因为有多次调用phpadsnews并且网站在继续呈现页面的不同部分之前等待响应。使用iframe,我能够允许网站呈现页面的其他部分,并仍然异步调用phpads的Document.write()命令。防止和js锁定。

答案 6 :(得分:5)

从可用性的角度来看,原始框架集模型(框架集和框架元素)非常糟糕。 IFrame是一个后来的发明,它没有原始框架集模型那么多的问题,但确实有它的缺点。

如果您允许用户在IFrame内导航,则链接和书签将无法按预期工作(因为您将外页的网址加入书签,而不是iframe的网址)。

答案 7 :(得分:5)

当您的主页以HTTP协议加载并且页面的某些部分需要使用HTTPS协议时,iFrame可以击败jsonp。

特别是,如果你的dataType本身不是json,需要在服务器上翻译成json,并在客户端上翻译成例如json。复杂的HTML。

所以nope - iFrame不是邪恶的。

答案 8 :(得分:4)

我已经看到IFRAME非常成功地应用于制作动态上下文菜单,但该网络应用的目标受众只是Internet Explorer用户。

我想说这一切都取决于你的要求。如果您希望确保您的页面在每个浏览器上都能正常工作,请避免使用IFRAME。如果您的目标是狭隘且知名的受众(例如,在本地Intranet上)并且您看到使用IFRAME的好处,那么我会说这样做是可以的。

答案 9 :(得分:4)

值得注意的是,无论用户的互联网连接速度或iframe的内容速度如何,iframe都会导致网页下载速度降低(0.3秒左右)但明显减慢。在本地测试时,这不是你会看到的。实际上,对于添加到页面的任何元素都是如此,但iframe似乎更糟糕。

答案 10 :(得分:4)

他们不错,但实际上很有帮助。前段时间我遇到了一个很大的问题,我不得不嵌入我的Twitter提要,它不会让md在同一页面上进行,因此我将其设置在不同的页面上,并将其作为iframe放入。

它们也很好,因为所有浏览器(和手机浏览器)都支持它们。只要你正确使用它们,就不能认为它们是不好的做法。