马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
WHATWG版和W3C版的HTML5规范虽然根源相同,在一些领域却已经产生分歧。我们在HTML内里声明DOCTYPE一样平常会有以下几种:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
是的,这里有HTML和XHTML,也有Transitional和Strict之分。望文生义,XHTML是指这个文档是依照XML的格局来誊写的,而HTML则暗示这个文档是依照HTML的格局来誊写的。Transition则暗示这个文档到达了Transitional.dtd大概loose.dtd的请求,Strict则暗示这个文档到达了strict.dtd的请求。但现实上我们常常会存在以下的曲解:
(1)我的文档是声明为XHTML的,则我的文档一定完整依照XML的格局。
(2)我的文档是声明为Strict的,则我的文档一定是依照StrictMode的体例来Render的,反之,是以QuirksMode的体例来Render的。
这两种了解都很间接,但是倒是毛病的,我们也常常会犯这类的毛病。
起首,文档声明为XHTML和HTML,和文档的Parse(即扫瞄器对文档的剖析)是没有间接联系关系的。现实上,扫瞄器怎样Parse文档取决于服务器以甚么格局来供应这个文档。一般情形下,有两种体例,"text/html"和"application/xhtml+xml"。只要以"application/html+xml"体例来供应的文档才干够被依照XML的体例来Parse。但是,由于扫瞄器的汗青缘故原由,并非一切的扫瞄器都撑持"application/xhtml+xml"格局的文档,IE7之前的版本(包含IE7)就不克不及够撑持这类格局,假如IE7碰着这类格局的文档,它会提醒用户另存为别的文件。思索到IE利用的普遍性,今朝尽年夜部分的文档都是以"text/html"的体例来供应的。以"text/html"体例来供应的文档是依照HTML的语义来Parse的,人人都晓得HTML的容错性长短常强的,即便你的文档内里的TAG没有准确地封闭,这个HTML也可以被准确地显现出来。因而假如你的XHTML是以"text/html"的体例来供应的(尽年夜多半情形下都是),那末你即便在DOCTYPE内里声了然XHTML,你的文档也不是以XML的格局来Parse的,因而也不克不及包管你的文档是严厉依照XML的标准的。现实上,良多专家都倡议假如你的文档不是以"application/xhtml+xml"的体例来供应的,那末你就应当声明为HTML。
其次,扫瞄器以甚么样的体例来Render你的文档,其实不以你声明的DTD来决意的。现实上,假如你声了然DOCTYPE和DTD,你的文档就是以StrictMode(大概称为StandardMode,良多扫瞄器还包含AlmostStandardMode的体例,这里不举行辨别)体例来Render的。关于没有DOCTYPE的文档,才是以QuirksMode体例来Render的。因而扫瞄器的Render形式和你声明的DTD并没有间接的干系。
最初,你声明为Strict.dtd仍是Transitional.dtd,在今朝的扫瞄器看来是没有甚么区分的。Strict.dtd比Transitional.dtd大概loose.dtd要严厉多了,良多元素在strict.dtd内里都不克不及利用。但是由于扫瞄器的兼容性,即便你在DOCTYPE内里声了然Strict.dtd,扫瞄器碰到strict.dtd内里不同意的元素,也还可以准确地显现你的文档。我推测扫瞄器并未将DTD思索出来。比方iframe这个TAG在strict.dtd内里其实不存在,但即便你的DOCTYPE内里声了然strict.dtd,然后利用了iframe这个TAG,扫瞄器(包含IE7,IE8,FF3.0,Safari3.0)都可以准确地显现你的文档。扫瞄器并没有依照你声明的DTD来Parse你的文档。今朝可以包管你的文档是切合strict.dtd仍是Transitional.dtd的,只能经由过程一些网上的Validator,如W3CValidator来剖析,扫瞄器其实不可以给你很好的撑持。固然,实践上假如你可以严厉依照你声明的DTD来誊写你的文档,那是最好的,如许包管了今后扫瞄器对DTD严厉恪守的时分,你的文档不会发生毛病。
因而,
(1)假如你的文档是以"text/html"的体例来供应的,那末你就应当声明为HTML。假设你想要让IE7可以准确地显现,那末你就更应当这么做了。
(2)假如你的文档声明为XHTML,那末你应当以"application/html+xml"的体例来供应。
(3)只管在你的文档后面声明DOCTYPE和DTD,如许可以包管你不是以QuirksMode的体例来Render文档的。
(4)假如你声了然DTD,那末就要严厉依照DTD的请求来誊写你的文档。出格是假如你声了然Strict.dtd,那末你应当注重哪些元素是不克不及够利用的。
注重:跟着工夫的开展,扫瞄器对HTML和XHTML,Strict.dtd和Transitional.dtd的撑持会更好。假如你的扫瞄器比IE7,IE8,FF3.0和Safari3.0要高良多良多的版本,那末你要注重本文的合用性。
</p>
一些公司联合起来,成立了一个叫做WebHypertextApplicationTechnologyWorkingGroup(Web超文本应用技术工作组-WHATWG)的组织。 |