I would like to ask if Internet Explorer in QuirksMode has a different JavaScript implementation than IE in a normal mode (when doctype is correctly defined).
Is it possible that a JavaScript code will behave in a different way in QuirksMode and in normal IE mode?
I would like to ask if Internet Explorer in QuirksMode has a different JavaScript implementation than IE in a normal mode (when doctype is correctly defined).
Is it possible that a JavaScript code will behave in a different way in QuirksMode and in normal IE mode?
Share Improve this question asked Oct 1, 2009 at 13:06 Richard KnopRichard Knop 83.7k154 gold badges398 silver badges560 bronze badges 1- 1 Do you mean Javascript code itself or the HTML DOM, these are often incorrectly confused? – AnthonyWJones Commented Oct 1, 2009 at 13:17
3 Answers
Reset to default 10Yep.
One of the most noticeable differences is that in quirks mode, BODY (document.body) is considered to be root element, whereas in standard mode (and the way it's meant to be) - root element is HTML (document.documentElement).
This, for example, affects the way viewport dimensions are usually calculated; in standard mode, one would use document.documentElement.clientHeight
, while in quirks - document.body.clientHeight
- to get height of a viewport.
Detecting this behavior is easy - document.documentElement.clientHeight == 0
- would tell us that documentElement
is not the root element, and that body should be used instead.
And of course other usual quirks mode discrepancies, such as assigning unitless CSS values, result in a different oute. When in quirks, such values are traditionally assigned successfully, whereas in standards mode - they are ignored.
JavaScript should not behave differently; however, the DOM objects that JavaScript operates on may have different behaviors.
It certainly does in Internet Explorer 8 where full standards mode no longer gets <a name="foo">
when asked document.getElementById('foo')
and where (IIRC) setAttribute
and friends are fixed.