日期:2014-05-17 浏览次数:20716 次
今天在移植一个HTML页面的时候发生了一个问题,在chrome下显示正常,而在IE9下始终显示不正常,页面七上八下的,似乎是CSS在IE9下不能正常解析,一开始心里又在骂万恶的IE,经过无数次的尝试后在HTML文档第一行加上了一句
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
后,整个世界正常了,总结如下:
之前写HTML页面一般都是直接以<html>开头了,完全忽略了HTML头文档的作用,一直以为它是无用的,事实上,它确实是有用的,目前的HTML头有如下几种
HTML4.01 Strict DTD: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> HTML4.01 Transitional DTD: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> HTML4.01 Frameset DTD: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset //EN" "http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd"> XHTML1.0 Strict DTD: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> XHTML1.0 Transitional DTD: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> XHTML1.0 Frameset DTD: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> XHTML1.1 DTD: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
它们具体的区别就不详细讲了,网上一搜文档一大堆,具体体现在严格定义了HTML头文档类型的话,浏览器会按照所定义的规范去解析该HTML文档,如果没有定义的话,浏览器会按默认的文档类型会以意想不到的形式去解析页面,从而出现了上面的在chrome下解析正常,在IE9下解析不正常的现象
?
如此说来,IE9的做法是传统的也似乎是合乎情理的,没有定义文档类型按默认的解析方式显示给我一个“不正常”的页面,而chrome却智能的判断了解析方式显示正常,隐性的帮技术人员解决了一些问题,到底好不好呢?