网络编程
位置:首页>> 网络编程>> 网页设计>> 用doctype激活浏览器模式(3)

用doctype激活浏览器模式(3)

作者:秦歌 来源:随网之舞 发布时间:2009-06-15 19:02:00 

标签:doctype,内容,浏览器,Firefox,模式

选择doctype

text/html

下面是创建新的text/html文档时如何选择doctype的简单指南:

  • 标准模式,最前沿的验证

  • <!DOCTYPE html>

  • 如果想验证诸如<video><canvas>和ARIA这样的新特性,那么这样做是对的。注意,HTML5的有效定义依旧在变化中,请确保在Firefox、Safari、Chrome、Opera9或Opera10中测试图像对齐。在Internet Explorer中测试图像对齐是不足够的,无论如何请确保在IE8中也进行了测试。

  • 标准模式,更稳定的验证目标

  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

  • 这个doctype也会触发标准模式,且10岁大的HTML4.01有效定义是稳定的。请确保在Firefox、Safari、Chrome、 Opera9或Opera10中测试图像对齐。在Internet Explorer中测试图像对齐是不足够的,无论如何请确保在IE8中也进行了测试。

  • 要使用标准模式,但仍要验证不推荐标记或在表格布局中使用切片图像且不想去修复它们。

  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

  • 它会触发几乎标准模式(和老掉牙的Mozilla中的完全标准模式full Standards mode)。请注意,如果以后移植到HTML5上,基于利用表格实现的切片图像的布局可能会被破坏(且完整标准模式也如此)。

  • 故意要使用怪癖模式

  • 没有doctype。

  • 请别这样做。故意为怪癖模式所做的设计将会困扰你,在将来你的同事或继任者甚至没有人关心Windows IE6(Netscape4.x和IE5已经没有人关心了)。为怪癖模式设计是个坏主意。相信我。

  • 如果你想依旧支持Windows IE6,对它做一个特别的hack使用条件注释比使其他浏览器退步到怪癖模式好。

我不推荐任何的XHTML doctype,因为XHTML被用作text/html被认为是有害的。无论如何,如果你选择使用XHTML doctype,请注意XML声明会使IE6(但不是IE7!)触发怪癖模式。

application/xhtml+xml

对application/xhtml+xml的简单指南是绝不使用doctype。该方式下的网页不是“严格一致”的XHMTL1.0,但这并不重要。(请看后面的附录

IE8 并发症

A List Apart 曾介绍 ,IE8除doctype外会使用基于meta元素的模式转换作为模式选择的因素之一。(请看Ian HicksonDavid BaronDavid Baron againRobert O’CallahanMaciej Stachowiak的评论。)

IE8有4种模式:IE5.5怪癖模式、IE7标准模式、IE8 几乎标准模式 和IE8标准模式。模式的选择取决于来自几个方面的数据:doctype、meta元素、HTTP头、来自微软的定期下载数据、局域网域、用户所做设置、局域网管理员所做设置、父框架的模式(如果有)和地址栏兼容视图按钮被用户触发。(对于嵌入该引擎的其他应用,模式也取决于嵌入的应用。)

幸运的是如果出现下列情况,IE8大体上会像其他浏览器一样使用doctype嗅探:

  • 作者没有设置X-UA-Compatible HTTP头

  • 作者没有设置X-UA-Compatible meta标签

  • 微软没有在黑名单中放置该站点的域名

  • 局域网管理员没有把该站点放置到黑名单

  • 用户没有按下兼容视图按钮(Compatibility View button) (或以其他方式添加到某个特定的用户黑名单中)

  • 该站点不在局域网域中

  • 用户没有选择在IE7中显示所有站点

  • 页面没有通过frame嵌入到兼容模式的页面中

上述除两个关于X-UA-Compatible的情况外,IE8像IE7一样执行doctype嗅探。IE7仿真( IE7 emulation)叫兼容视图。

在 X-UA-Compatible 情况下,IE8的行为和其他浏览器完全不同。想看本页的附录PDFPNG格式的流程图。

不幸的是,没有 X-UA-Compatible的HTTP头或meta标签,即使使用了合适的doctype,IE8让用户无意间使页面从IE8的标准模式降到IE7模式,这是一种仿真的IE7标准模式。更糟糕的是,局域网管理员也可以这么做。微软也可以把你所用的所有域名到列入黑名单。

为了对付这些影响,doctype是不够的,你需要X-UA-Compatible HTTP头和meta标签。

下面的简单指南是针对已经有doctype在其他浏览器触发标准模式或者几乎标准模式的新的text/html文档如何选择X-UA-Compatible HTTP头或meta标签的:

  • 你的域名没有在微软的黑名单上,你更关注是没有浏览器专属的令人讨厌的东西而不是确保用户无法回退去呈现IE7的行为。

  • 你不需要包括X-UA-Compatible HTTP头或meta标签。

  • 你的域名在微软的黑名单中,由于你域名中的其他作者破坏了站点或许导致用户对整个域启用了兼容视图,你担心Google或Digg用frame嵌入你的站点或你想确保用户无法使用兼容视图

  • 首先,在你的页面包含后面的meta元素(它在HTML5中是非法的) <meta http-equiv="X-UA-Compatible" content="IE=Edge"> (在任何脚本元素前),或者设置后面的HTTP头:X-UA-Compatible: IE=Edge

  • 你的站点在IE7中工作但在IE8中破坏

  • 首先,在你的页面包含后面的meta元素(它在HTML5中是非法的)

    (在任何脚本元素前),或者设置后面的HTTP头: X-UA-Compatible: IE=EmulateIE7,然后修复你的站点不依赖非标准的IE7行为和迁移到IE=Edge。

0
投稿

猜你喜欢

  • 关于CSS中的命名规则(其实我觉得是XHTML元素的命名规则更加合理些)这个问题,已经有很多人在说了,其中也不乏一些真知灼见。不过这种东西也
  • 序言本文所提及的VTD-XML并非本文作者原创,作者只是对它进行介绍。问题通常当我们提起XML的使用时,最头痛的部分便是XML的verbos
  • 网上有很多提供在线按钮制作、文字标题制作、Logo制作服务的网站,它们可以非常方便了让大家轻松的获得效果出色的各类图标型的图片,下面就快来看
  • 今天突然想起做一个当鼠标经过<a/>时,会发出声音Js代码如下: <script type="text
  • 随着信息技术的飞速发展,数据处理不仅在数量上要求越来越大,而且在质量上也要求越来越高。操作系统的稳定对数据库来说是十分紧要的,在数据库可操作
  • IE>6 及其它浏览器不在此文论述范围内。img 的 onload 事件,是当图片加载完成之后,就处触发。img.complete 这
  • 看到有人用的PJBlog使用的是自动填写验证码,这样其实也不使用验证码基本上没有什么区别,很容易被 * ,因此在参照许多修改的基础上,找到
  • 当你需要一个简单易用的导航菜单得时候。CSS Menu是个不错的选择。相对于Flash/Javascript,他们小巧轻便,而且方便使用。当
  • 上篇文章讲了js中的传值和传址 和 函数的作用域.这章我们来探讨js中的变量,表达式,和运算符 还有一些 js 语句。升级中……1, 表达式
  • 前不久网上公开了一个MySQL Func的漏洞,讲的是使用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器。最早看到相关的报道是
  • 用户界面和用户体验(UI/UX)是任何产品成败的关键,尤其 Web,Web 是一种公开的,可以被任何人随时随地访问的特殊产品,用户的体验几乎
  • 如果只是因为浏览者改变了浏览器的设置,或者因为浏览器不兼容,使自己精心制作的网页变得“面目全非”,那多令人沮丧!下面我们以网页爱好者的常用工
  • 据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会、也什么没有必要去关心、了解索引,实在哪天某个查询太慢了找到查
  • 当浏览者进入你的网站首页时或提交某些表单时,会弹出网站声明或提交说明等文本信息框,引导浏览者使用你的网站。实现这个功能我们是用Dreamwe
  • 删除一条留言信息会级联删除回复信息,这时我们需要用到事务,如下SQL 代码如下:ALTER PROCEDURE [dbo].[proc_tb
  • 最终效果如下图,右侧灰边看相对位置,版权所有谨防假冒:去年曾针对有时间先后的翻页记录了思考片段。之后没来得及调整一直是默认和插件并用,虽然难
  • 上一篇:微软建议的ASP性能优化28条守则(7)技巧 22:尽可能使用 Server.Transfer 代替 Response.Redire
  • sql server端口,我们可以通过\"服务器端网络试用工具\"和\"客户端实用工具\"来设定,设
  • Douglas Crockford是JavaScript开发社区最知名的权威,是JSON、JSLint、JSMin和ADSafe之父,是《J
  • 就是在mysql命令行登录的时候加上: --pager=more 参数可以使用linux下的more来分页,很好用
手机版 网络编程 asp之家 www.aspxhome.com