在此过程中,我发现使用iframe是一种“糟糕的做法”。

这是真的吗?使用它们的利与弊是什么?


当前回答

它们并不坏,但实际上很有帮助。我有一个巨大的问题前一段时间,我必须嵌入我的推特饲料,它只是不让md做在同一页上,所以我把它设置在不同的页面,并把它作为一个iframe。

它们还很好,因为所有浏览器(包括手机浏览器)都支持它们。只要你正确地使用它们,它们不能被认为是一种坏习惯。

其他回答

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

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

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

通常情况下,如果不使用iframe就可以实现,那是一个更好的选择。我相信在座的其他人可能会有更多的信息或更具体的例子,这一切都取决于你想要解决的问题。

话虽如此,如果你仅限于HTML,不能访问后端,如PHP或ASP。NET等,有时iframe是你唯一的选择。

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

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

如果您允许用户在IFrame内部导航,那么链接和书签将不能正常工作(因为您收藏了外部页面的URL,而不是IFrame的URL)。

在许多情况下与它们一起工作,我真的认为iframe在web编程中相当于goto语句。也就是说,这是通常要避免的。在站点中,它们可能有些用处。然而,对于跨站点来说,除了最简单的内容,它们几乎总是一个坏主意。

考虑一下可能性……如果用于参数化的内容,它们已经创建了一个接口。在专业网站中,该接口需要SLA和版本管理——在急于上网时,这些几乎总是被忽略。

如果用于活动内容(承载脚本的框架),则存在(不同的)跨域脚本限制。有些可能会被黑客攻击,但很少持续。如果你的框架内容需要交互性,那么它就很难超越框架。

如果与授权内容一起使用,那么参与站点需要在主机之间将授权信息移出频带。

因此,尽管在站点中偶尔有用,但它们并不适合混搭。您最好查看真正的门户和portlet。更糟糕的是,它们是每个网络业余爱好者的宠儿——许多技术经理已经抓住它们作为许多问题的解决方案。事实上,他们创造了更多。

当您的主页以HTTP协议加载,而页面的某些部分需要以HTTPS协议工作时,iFrame可以轻松击败jsonp。

特别是,如果你的数据类型不是原生的json,需要在服务器上翻译成json,并在客户端翻译回复杂的html。

所以iFrame并不是邪恶的。