Web标准教程

关注公众号 jb51net

关闭
网页制作 > CSS > Web标准教程 >

Web标准:文档类型和网页浏览器

佚名

针对浏览器版本

在理想的世界里, 当然, 所有的规范都将是完美的, 而且他们在用户端将直接的完美的被执行. 在更实际的理想世界里, 浏览器厂商应该为新用户直接提供符合标准的更新, 用户可以不费吹灰之力的使用这些最新版本的浏览器. 如果是这样, 我们这些开发者就可以用最新的最伟大的技术去构建网站和应用程序, 而不用考虑向下兼容的问题. 但是我们都知道, 现实世界离这个状态还差不太远.

标准总是在断断续续的开发和改进, 有时会花上几年时间, 提出他们认为的"推荐"状态. 但是浏览器发行的周期是被产品管理和市场的关注(安全性, 功能, 速度)左右的, 很少有能和标准规范的定稿相符合的, 甚至当浏览器开发商他们自己很积极的用非常标准的方法进行开发, 但是用户们, 特别是同样组织背景的用户, 往往是很懒于更新他们的浏览器的.

我们面对所有这些因素, 网站开发者们在制作网站时都会有点不是滋味, 我们怎么确保让浏览器渲染的结果继续保持我们想要让他们呈现的样子?

我们可以指定我们想要用的语言的版本, 就像是 CSS 2.1或者JavaScript 1.5. 但是不幸的是, 浏览器渲染通常只会执行规范的一部分, 而且在浏览器之间对规范的解释也会存在差异. 所以任何两个不同时代的浏览器会对CSS有完全不同的渲染, 或者对一个同一个表单控制器触发不同的事件.

因为这些捣乱在工作中出现, 我们真得只剩下一种选择, 让我们今天创建的网站在未来五年中看起来就像今天一样: 定义一个这个网站建立并测试过的浏览器版本列表, 然后要求浏览器制.造商用一种方法执行原先的渲染和脚本解释引擎来让这个网站看上去和建立的时候一样, 在未来有较好的表现.

这就是为什么我们团队决定推荐IE8, 然后我们也希望在其他浏览器中也能很好的执行. 保持语法的简炼

确保浏览器的 "版本目标" 能较容易地被开发者接受的一个关键是能够用手动或是编辑器简单的执行. 我们考虑了很多语法方案, 包括 条件注释型语法, 按XML Porlog方式的处理指令, 又或是HTML档案, 比如那些被微格式区域所采用的, 但是几乎都没有Meta元素来的更适合这个工作.

用一个简单的Meta声明, 我们能指定在IE8中的渲染引擎来使用, 例如, 插.入这样一段代码

<meta http-equiv="X-UA-Compatible" content="IE=8" />

在文档的head区域里, 可以让IE 8渲染用最新的标准模式渲染这个页面, 这个语法可以很容易的扩展到其他浏览器上:

<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />

为了加快处理这个固定指令的速度, 我们要像处理字符编码信息meta时运用的优先级机制引入到这个版本目标meta元素上, 为了让它起到作用, meta元素必须放到文档的head里, 并且尽可能的靠近顶部. 它可以让其他的meta元素或title元素更优先, 但是一定要在其他的元素的上面, 并且不同通过JavaScript把它加进DOM中.

大家注意到, 我们在这里用到的meta元素是HTTP-equivalent类型的, 这就意味着我们可以用下面这种方法设置服务器的头文件来获得同样的效果.

X-UA-Compatible: IE=8;FF=3;OtherUA=4

我们也能同时使用两种方法, 例如我们可能通过使用头文件的方法设置一条基线来全局定义一整个网站, 然后用meta的方法在单个的页面覆盖头文件的设置.