Home > Web Front-end > JS Tutorial > body text

Analysis of the impact of !DOCTYPE declaration on JavaScript_javascript skills

WBOY
Release: 2016-05-16 18:29:46
Original
1146 people have browsed it

要建立符合标准的网页,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']

有无滚动条均为:
offsetWidth=
paddingLeft+paddingRight+borderLeft+borderRight

offsetHeight=
paddingTop+paddingBottom+borderTop+boderBottom

1、无滚动条
clientWidth=CSS中定义的宽度+paddingLeft+paddingRight

clientHeight=CSS中定义的高度+paddingTop+paddingBottom
(均不包括边框宽度)

2、有滚动条
clientWidth=CSS中定义的宽度-滚动条宽度(17固定值)-边框宽度,

clientHeight=CSS中定义的高度-滚动条宽度(17固定值)-边框宽度

实际真实宽度,不包括padding与边框值
(除IE和Opera以外无此属性)

offsetLeft,offsetTop clientLeft,clientTop currentSytle[‘left'],currentStyle[‘top']

有无滚动条均为:
offsetLeft=对象的offsetLeft-边框
offsetTop=实际值

有无滚动条均为:边框的宽度

除IE和Opera以外无此属性

2、测试IE8.0变态模式(Quirks)的宽度与高度(width,height)

offsetWidth,offsetHeight clientWidth,clientHeight currentStyle[‘width'],currentStyle[‘height]

1、(无滚动条)宽度(高度)=当前对象的实际数值
2、(有滚动条)宽度(高度)=CSS中定义的数值

1、(无滚动条)宽度(高度)=当前对象的实际数值
2、(有滚动条)宽度(高度)=当前对象在CSS中定义的数值-滚动条(17)

有无滚动条均为:
宽度和高度均为CSS中定义的数值

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,offsetHeight clientWidth,clientHeight currentStyle[‘width'],currentStyle[‘width']

有无滚动条均为:
offsetWidth=
paddingLeft paddingRight borderLeft borderRight

offsetHeight=
paddingTop paddingBottom borderTop boderBottom

1、无滚动条
clientWidth=CSS中定义的宽度 paddingLeft paddingRight

clientHeight=CSS中定义的高度 paddingTop paddingBottom
均不包括边框宽度

2、有滚动条
clientWidth=CSS中定义的宽度-滚动条宽度(17固定值)-边框宽度,

clientHeight=CSS中定义的高度-滚动条宽度(17固定值)-边框宽度

实际真实宽度,不包括padding与边框值
(除IE和Opera以外无此属性)

offsetLeft,offsetTop clientLeft,clientTop currentSytle[‘left'],currentStyle[‘top']

有无滚动条均为:
offsetLeft=对象的offsetLeft-边框
offsetTop=实际值

有无滚动条均为:边框的宽度

除IE和Opera以外无此属性

With or without scroll bars:
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)
offsetWidth,offsetHeight clientWidth,clientHeight currentStyle[‘width'],currentStyle[‘height]

1、(无滚动条)宽度(高度)=当前对象的实际数值
2、(有滚动条)宽度(高度)=CSS中定义的数值

1、(无滚动条)宽度(高度)=当前对象的实际数值
2、(有滚动条)宽度(高度)=当前对象在CSS中定义的数值-滚动条(17)-边框宽度

有无滚动条均为:
宽度和高度均为CSS中定义的数值
(除IE和Opera以外无此属性)

offsetLeft,offsetTop clientLeft,clientTop currentSytle[‘left'],currentStyle[‘top']

有无滚动条均为:

offsetLeft(offsetTop)=实际值

有无滚动条均为:边框的宽度

除IE和Opera以外无此属性

offsetLeft, offsetTop clientLeft, clientTop currentSytle['left'], currentStyle['top']

With or without scroll bars:
offsetLeft=offsetLeft-border of the object
offsetTop=actual value

With or without scroll bars: the width of the border

No such attribute except IE and Opera

2. Test the width and height (width, height) of IE8.0 abnormal mode (Quirks)

offsetWidth, offsetHeight clientWidth, clientHeight currentStyle[‘width’], currentStyle[‘height]

1. (No scroll bar) width (height) = the actual value of the current object
2. (with scroll bar) width (height) = the value defined in CSS

1. (Without scroll bar) width (height) = the actual value of the current object
2. (with scroll bar) width (height) = the value defined in CSS of the current object - scroll bar (17) - Border width

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

The values ​​obtained in 3, FF, Opera, Safari and Chrom are the same as in the first case. 3. Cancel DOCTYPE statement 1. IE6.0 and IE7.0 have the same strict result as the abnormal mode (Quirks) in IE8.0 when there is no DOCTYPE declaration. 2. The standard mode of FF, Safari, Chrome and IE8.0 is the same as the transitional mode. 3. In the Opera browser, when the element does not have a scroll bar, the values ​​of offsetHeight and clientHeight are based on its current actual size. 4. Rewrite the DOCTYPE statement to 1. IE6.0 and IE7.0 have the same strict result as the abnormal mode (Quirks) in IE8.0 when there is no DOCTYPE declaration. 2. The standard mode of FF, Safari, Chrome and IE8.0 is the same as the transitional mode. 3. In the Opera browser, when the element does not have a scroll bar, the values ​​of offsetHeight and clientHeight are based on its current actual size. Opera also has the same attribute "currentStyle" as IE, so you can also use currentStyle to get the precise value of an element in Opera.
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template