要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效;当然对JS的取值也会有影响。
DOCTYPE声明如下:
DOCTYPE声明包括:过渡型(Transitional),严格型(Strict)和框架型(Frameset)。接下来就看一下这三种类型对不同浏览器在获取元素相关信息时的影响(包括不定义DOCTYPE和只将DOCTYPE定义为形式),我测试的浏览器分别为:IE6.0、IE7.0、IE8.0(变态模式)、FF、Opera、Chrome和Safari。由于IE5.5已经几乎被淘汰,所以不在测试范围之内。
以下就是测试结果(滚动条只是元素本身的滚动条并不是窗口的):
一、过渡型(Transitional)
1、测试IE6.0、IE7.0与IE8.0(非变态模式Quirks)的宽度和高度(width,height)
offsetWidth,offsetHeight | clientWidth,clientHeight | currentStyle[‘width'],currentStyle[‘width'] |
有无滚动条均为: |
1、无滚动条 |
实际真实宽度,不包括padding与边框值 |
offsetLeft,offsetTop | clientLeft,clientTop | currentSytle[‘left'],currentStyle[‘top'] |
有无滚动条均为: |
有无滚动条均为:边框的宽度 |
除IE和Opera以外无此属性 |
2、测试IE8.0变态模式(Quirks)的宽度与高度(width,height)
offsetWidth,offsetHeight | clientWidth,clientHeight | currentStyle[‘width'],currentStyle[‘height] |
1、(无滚动条)宽度(高度)=当前对象的实际数值 |
1、(无滚动条)宽度(高度)=当前对象的实际数值 |
有无滚动条均为: |
offsetLeft,offsetTop | clientLeft,clientTop | currentSytle[‘left'],currentStyle[‘top'] |
有无滚动条均为: offsetLeft(offsetTop)=实际值 |
有无滚动条均为:边框的宽度 |
除IE和Opera以外无此属性 |
The values obtained in 3, FF, Opera, Safari and Chrom are the same as in the first case.
2. Strict
1. Test the width and height (width, height) of IE6.0, IE7.0 and IE8.0 (non-abnormal mode Quirks)
offsetWidth, offsetHeight | clientWidth, clientHeight | currentStyle['width'], currentStyle['width'] | ||||||||||||||||||||||||
offsetWidth= paddingLeft paddingRight borderLeft borderRight offsetHeight= paddingTop paddingBottom borderTop boderBottom |
1. No scroll bar clientWidth=width paddingLeft paddingRight defined in CSS clientHeight=height paddingTop paddingBottom defined in CSS Does not include border width 2 , with scroll bar clientWidth=width defined in CSS-scroll bar width (17 fixed value)-border width, clientHeight=height defined in CSS-scroll bar width (17 fixed value)- Border width |
Actual real width, excluding padding and border values (no such attribute except IE and Opera)
|
||||||||||||||||||||||||
offsetLeft, offsetTop | clientLeft, clientTop | currentSytle['left'], currentStyle['top'] | ||||||||||||||||||||||||
With or without scroll bars: |
With or without scroll bars: the width of the border |
No such attribute except IE and Opera |
offsetWidth, offsetHeight | clientWidth, clientHeight | currentStyle[‘width’], currentStyle[‘height] |
1. (No scroll bar) width (height) = the actual value of the current object |
1. (Without scroll bar) width (height) = the actual value of the current object |
With or without scroll bars: Width and height are values defined in CSS (except IE and Opera, there is no such attribute) |
offsetLeft, offsetTop | clientLeft, clientTop | currentSytle['left'], currentStyle['top'] |
With or without scroll bars: offsetLeft(offsetTop)=actual value |
With or without scroll bars: the width of the border |
No such attribute except IE and Opera |