在此过程中,我发现使用iframe是一种“糟糕的做法”。
这是真的吗?使用它们的利与弊是什么?
在此过程中,我发现使用iframe是一种“糟糕的做法”。
这是真的吗?使用它们的利与弊是什么?
当前回答
在许多情况下与它们一起工作,我真的认为iframe在web编程中相当于goto语句。也就是说,这是通常要避免的。在站点中,它们可能有些用处。然而,对于跨站点来说,除了最简单的内容,它们几乎总是一个坏主意。
考虑一下可能性……如果用于参数化的内容,它们已经创建了一个接口。在专业网站中,该接口需要SLA和版本管理——在急于上网时,这些几乎总是被忽略。
如果用于活动内容(承载脚本的框架),则存在(不同的)跨域脚本限制。有些可能会被黑客攻击,但很少持续。如果你的框架内容需要交互性,那么它就很难超越框架。
如果与授权内容一起使用,那么参与站点需要在主机之间将授权信息移出频带。
因此,尽管在站点中偶尔有用,但它们并不适合混搭。您最好查看真正的门户和portlet。更糟糕的是,它们是每个网络业余爱好者的宠儿——许多技术经理已经抓住它们作为许多问题的解决方案。事实上,他们创造了更多。
其他回答
当您的主页以HTTP协议加载,而页面的某些部分需要以HTTPS协议工作时,iFrame可以轻松击败jsonp。
特别是,如果你的数据类型不是原生的json,需要在服务器上翻译成json,并在客户端翻译回复杂的html。
所以iFrame并不是邪恶的。
我曾看到IFRAMEs作为一种制作动态上下文菜单的简单方法被成功地应用,但该web应用的目标受众只是ie用户。
我想说这完全取决于你的要求。如果您希望确保页面在每种浏览器上都能正常运行,请避免使用IFRAMEs。如果你的目标是一个狭窄的和知名的观众(例如。在本地内部网),并且您看到了使用IFRAMEs的好处,那么我会说这样做是可以的。
它们并不坏,但实际上很有帮助。我有一个巨大的问题前一段时间,我必须嵌入我的推特饲料,它只是不让md做在同一页上,所以我把它设置在不同的页面,并把它作为一个iframe。
它们还很好,因为所有浏览器(包括手机浏览器)都支持它们。只要你正确地使用它们,它们不能被认为是一种坏习惯。
在许多情况下与它们一起工作,我真的认为iframe在web编程中相当于goto语句。也就是说,这是通常要避免的。在站点中,它们可能有些用处。然而,对于跨站点来说,除了最简单的内容,它们几乎总是一个坏主意。
考虑一下可能性……如果用于参数化的内容,它们已经创建了一个接口。在专业网站中,该接口需要SLA和版本管理——在急于上网时,这些几乎总是被忽略。
如果用于活动内容(承载脚本的框架),则存在(不同的)跨域脚本限制。有些可能会被黑客攻击,但很少持续。如果你的框架内容需要交互性,那么它就很难超越框架。
如果与授权内容一起使用,那么参与站点需要在主机之间将授权信息移出频带。
因此,尽管在站点中偶尔有用,但它们并不适合混搭。您最好查看真正的门户和portlet。更糟糕的是,它们是每个网络业余爱好者的宠儿——许多技术经理已经抓住它们作为许多问题的解决方案。事实上,他们创造了更多。
它们并不是不好的做法,它们只是另一种工具,它们增加了灵活性。
For use as a standard page element... they're good, because they're a simple and reliable way to separate content onto several pages. Especially for user-generated content, it may be useful to "sandbox" internal pages into an iframe so poor markup doesn't affect the main page. The downside is that if you introduce multiple layers of scrolling (one for the browser, one for the iframe) your users will get frustrated. Like adzm said, you don't want to use an iframe for primary navigation, but think about them as a text/markup equivalent to the way a video or another media file would be embedded.
对于编写后台事件脚本,通常可以在隐藏的iframe和XmlHttpRequest之间进行选择,以加载当前页面的内容。不同之处在于iframe生成页面加载,因此您可以在大多数浏览器的浏览器缓存中来回移动。注意,谷歌在所有地方都使用XmlHttpRequest,在某些情况下也使用iframe来允许用户在浏览器历史记录中来回移动。