网页上使用 iframe 是不是一个好的用法

Phoenix Phoenix 2018.1.21 00:00 浏览(528) 评论 (0)
使用 iframe 是不是一个好的用法(good practice),不能一概而论,但是可以肯定是,现在的大部分网站避免采用这种方式的。

比较早期的网站使用 iframe,主要是用于导航栏(navigator)。为什么?
因为一个网站很多页面的导航栏部分是相同的,在避免切换页面的时候重复下载,将导航栏和正文分开在 iframe 中,是一个方便的做法。
同时带来的不利是,默认情况下,使用了 iframe 的网站的 URL 不会随着页面的变化而变化。
这就意味着一旦刷新,网站可能又回到首页。
那么现在的网站是如何解决不同页面使用相同的 navigator 而避免重复编码呢?
不同后台技术都有自己的方法,比如 ASP 有 SSI,PHP 有 require、require_once 或 include 函数,JSP 也有 include 指令。

iframe 一直是浏览器标准规范之一,只有很早期的浏览器不支持 iframe,现在几乎已绝迹。
所以从兼容性上来说,iframe 是没问题的。

那么现在什么时候会用到 iframe 呢?
因为 iframe 的页面和父页面(parent)是分开的,所以它意味着,这是一个独立的区域,不受 parent 的 CSS 或者全局的 JavaScript 的影响。
典型的,比如所见即所得的网页编辑器(WYSIWYG Online HTML Editor),因为它们需要 reset 自己的 CSS 到自己的标准,而不被 parent CSS 的 override。

而有些编辑器不是用 iframe,它使用了一种叫 contentEditable 的属性,用来启用页面元素的编辑,在早期版本 IE 下不支持的。

正是因为刚刚提到的 iframe 等于新建了一个全新的,不受 parent 影响的页面上下文,所以在一定程度上,类似于沙箱隔离(sandbox)。
除此之外,如果有可以不用 iframe 来解决的问题,还是避免使用 iframe。
替代方案一般就是动态语言的 include 机制、ajax 动态填充内容,以及以后会普及的 contentEditable。

本文链接 https://www.mangoxo.com/blog/3MDq90Dy 版权所有,转载请保留地址链接,感谢!

Phoenix 关注
來一遭,做一事。 等一人,愛一次。
  • 964 动态
  • 1,986 相册
  • 53 粉丝
  • 2,497 获赞