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

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


当前回答

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

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

其他回答

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

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来允许用户在浏览器历史记录中来回移动。

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

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

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

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

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

iframes肯定有用处。你还会怎么把天气网络小部件放在你的页面上?唯一的另一种方法是获取XML并解析它,但是当然,您需要条件来抛出pertenant天气图形……不太值得,但如果你有时间,会更干净。

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

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

所以iFrame并不是邪恶的。

我曾看到IFRAMEs作为一种制作动态上下文菜单的简单方法被成功地应用,但该web应用的目标受众只是ie用户。

我想说这完全取决于你的要求。如果您希望确保页面在每种浏览器上都能正常运行,请避免使用IFRAMEs。如果你的目标是一个狭窄的和知名的观众(例如。在本地内部网),并且您看到了使用IFRAMEs的好处,那么我会说这样做是可以的。