World Library  
Flag as Inappropriate
Email this Article

Quirks mode

Article Id: WHEBN0002635512
Reproduction Date:

Title: Quirks mode  
Author: World Heritage Encyclopedia
Language: English
Subject: HTML, Internet Explorer box model bug, XHTML, Cascading Style Sheets, Internet Explorer
Collection: Html
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Quirks mode

In computing, quirks mode refers to a technique used by some web browsers for the sake of maintaining backward compatibility with web pages designed for Internet Explorer 5 and earlier, instead of strictly complying with W3C and IETF standards in standards mode.

Contents

  • Overview 1
  • Mode differences and examples 2
    • Almost standards mode 2.1
  • Triggering different rendering modes 3
    • Comparison of document types 3.1
    • Mode verification 3.2
  • References 4
  • External links 5

Overview

The structure and appearance of a web page is described by a combination of two standardized languages: 1) HTML, a markup language designed for web use, which describes the structure and content of the page, and 2) CSS, a generalized stylesheet language, which specifies how the page should be rendered in various media (visual styles for screen display, print styles to use when printing the page, aural styles to use when the page is read aloud by a screen reader, etc.). However, most older web browsers either did not fully implement the specifications for these languages or were developed prior to the finalization of the specifications (Microsoft Internet Explorer version 5.0 for the Macintosh platform, released in 2000, was the first major web browser with full support for CSS Level 1, for example).[1] As a result, many older web pages were constructed to rely upon the older browsers' incomplete or incorrect implementations, and will only render as intended when handled by such a browser.

Support for standardized HTML and CSS in major web browsers has increased significantly, but the large body of legacy documents which rely on the quirks of older browsers represents an obstacle for browser developers, who wish to improve their support for standardized HTML and CSS, but also wish to maintain backward compatibility with older, non-standardized pages. Additionally, many new web pages continue to be created in the older fashion, since the compatibility workarounds introduced by browser developers mean that an understanding of standardized methods is not strictly necessary.

To maintain compatibility with the greatest possible number of web pages, modern web browsers are generally developed with multiple rendering modes: in "standards mode" pages are rendered according to the HTML and CSS specifications, while in "quirks mode" attempts are made to emulate the behavior of older browsers. Some browsers (those based on Mozilla's Gecko rendering engine, or Internet Explorer 8 in strict mode, for example) also use an "almost standards" mode which attempts to compromise between the two, implementing one quirk for table cell sizing while otherwise conforming to the specifications.[2]

Mode differences and examples

One prominent difference between quirks and standards modes is the handling of the CSS Internet Explorer box model bug. Before version 6, Internet Explorer used an algorithm for determining the width of an element's box which conflicted with the algorithm detailed in the CSS specification, and due to Internet Explorer's popularity many pages were created which relied upon this non-standard algorithm. As of version 6, Internet Explorer uses the CSS specification's algorithm when rendering in standards mode and uses the previous, non-standard algorithm when rendering in quirks mode.

Another notable difference is the vertical alignment of certain types of inline content; many older browsers aligned images to the bottom border of their containing box, although the CSS specification requires that they be aligned to the baseline of the text within the box. In standards mode, Gecko-based browsers will align to the baseline, and in quirks mode they will align to the bottom.[3]

Additionally, many older browsers did not implement inheritance of font styles within tables; as a result, font styles had to be specified once for the document as a whole, and again for the table, even though the CSS specification requires that font styling be inherited into the table. If the font sizes are specified using relative units, a standards-compliant browser would inherit the base font size, then apply the relative font size within the table: for example, a page which declared a base font size of 80% and a table font size of 80% (to ensure a size of 80% in browsers which do not properly inherit font sizes) would, in a standards-compliant browser, display tables with a font size of 64% (80% of 80%). As a result, browsers typically do not inherit font sizes into tables in quirks mode.[4]

Almost standards mode

A third compatibility mode known as either "almost standards mode" or "strict mode" which maintains the "traditional" vertical sizing of table cells according to the CSS2 specification, has been implemented in these browsers: Safari, Opera 7.5 (and later), all Gecko-based browsers since 1.0.1 (such as Firefox) and Internet Explorer 8.[2]

"Almost standards" mode rendering matches "standards" mode in all details except for one. The layout of images inside table cells is handled the same way "quirks" mode operates, instead, which is fairly consistent with legacy browsers such as Internet Explorer 7 (and earlier). This means that sliced-images-in-tables layouts are less likely to fall apart in browsers when in either "quirks" or "almost standards" mode, rather than "standards" mode.[5]

Triggering different rendering modes

Most often, browsers determine which rendering mode to use based on the presence of a Document Type Declaration in the page; if a full DOCTYPE is present the browser will use standards mode, and if it is absent the browser will use quirks mode. For example, a web page which began with the following DOCTYPE would trigger standards mode:


The following DOCTYPE is syntactically invalid, containing the public identifier keyword "PUBLIC" but no public identifier (indicating the name of the version of HTML in use), and no system identifier URL of an HTML Document Type Definition. This would trigger quirks mode:


Additionally, a web page which does not include a DOCTYPE at all will render in quirks mode.

One notable exception to this is Microsoft's Internet Explorer 6 browser, which will render a page in quirks mode if the DOCTYPE is preceded by an XML prolog, regardless of whether a full DOCTYPE is specified. Thus an XHTML page which begins with the following code would be rendered in quirks mode by IE 6:



The above is useful to an extent as it can be used to trigger quirks mode only in IE 6.

Quirks mode in any version of IE will also be triggered if anything precedes the DOCTYPE. For example, if a hypertext document contains a comment, space or any tag before the DOCTYPE declaration, IE will use quirks mode:



The problem with the XML declaration was fixed in version 7 of Internet Explorer, in which the XML prolog is simply ignored.[6] However, for maximum compatibility with existing and older web browsers, the World Wide Web Consortium, which maintains the XHTML specification, suggests that authors of XHTML documents could consider omitting the XML declaration.[7]

Comparison of document types

Henri Sivonen compiled a list of various document types and how they are treated in the most common browsers, showing whether pages are rendered in Quirks, Standards, or Almost standards mode. The criterion used for "Almost standards mode" is non-standard table cell height rendering. This table applies to content served with the Content-Type text/html. Content served with the Content-Type application/xhtml+xml is rendered in Standards mode in Chrome, Firefox, Internet Explorer 9, Safari, and Opera. Internet Explorer 6, 7, and 8 do not support Content-Type application/xhtml+xml.[2]

Doctype NS6 Mozilla 0.9.5-1.0 IE 8+
Firefox
Chrome
Safari
Opera 7.5+
Netscape 7+
Mozilla 1.0.1+
Konq 3.5+
HTML5 spec
IE 7
Opera 7.10
IE 6
Opera 7.0
Mac IE 5 Konq 3.2
None Q Q Q Q Q Q Q
HTML 2

Q Q Q Q Q Q Q
HTML 3

Q Q Q Q Q Q Q
HTML 3.2

Q Q Q Q Q Q Q
HTML 4.01
Strict with system identifier

S S S A A A A
without system identifier

S S S A A Q A
Transitional with system identifier

S S A A A A Q
without system identifier

Q Q Q Q Q Q Q
HTML5

Q S S A A A ?
XHTML Basic
with system identifier and without XML declaration

S S S A A A A
XHTML 1.0
Strict with system identifier and XML declaration



S S S A Q A Q
with system identifier and without an XML declaration

S S S A A A A
without system identifier and without an XML declaration

S S S A A A ?
Transitional with system identifier and with XML declaration



S S A A Q A Q
with system identifier and without an XML declaration

S S A A A A Q
without system identifier and without an XML declaration

S S A A A A ?
XHTML 1.1
with system identifier and an XML declaration

S S S A Q A Q
with system identifier and without XML declaration

S S S A A A A
Doctype NS6 Mozilla 0.9.5-1.0 IE 8+
Firefox
Chrome
Safari
Opera 7.5+
Netscape 7+
Mozilla 1.0.1+
Konq 3.5+
HTML5 spec
IE 7
Opera 7.10
IE 6
Opera 7.0
Mac IE 5 Konq 3.2

Mode verification

In most browsers, the Document Object Model extension document.compatMode indicates the rendering mode for the current page. In standards mode and almost-standards mode, document.compatMode contains the value "CSS1Compat", while in quirks mode it equals "BackCompat".[8]

Additionally, in Mozilla Firefox and Opera the rendering mode in use for a given page is indicated on the 'Page info' informational box.

References

  1. ^ "Cascading Style Sheets: CSS Browsers".  
  2. ^ a b c Sivonen, Henri. "Activating Browser Modes with Doctype". Retrieved 15 March 2011. 
  3. ^ "Images, Tables, and Mysterious Gaps". Mozilla Developer Center. Retrieved 27 May 2007. 
  4. ^ "Fixing Table Inheritance in Quirks Mode". Mozilla Developer Center. Retrieved 27 May 2007. 
  5. ^ "Gecko's "Almost Standards" Mode". Mozilla Developer Center. Retrieved 27 May 2007. 
  6. ^ Wilson, Chris (15 August 2005). "The prolog, strict mode, and XHTML in IE". IEBlog.  
  7. ^ "HTML Compatibility Guidelines". XHTML 1.0 The Extensible HyperText Markup Language (Second Edition).  
  8. ^ Koch, Peter-Paul (2 February 2009). "Miscellaneous". W3C DOM Compatibility - HTML. QuirksMode. Retrieved 14 February 2009. 

External links

  • The W3C Markup Validation Service
  • Testing doctype handling in browser
  • Quirksmode.org: Quirks mode and strict mode
  • Bookmarklet that reports the mode of a document
  • Eric Meyer on CSS: Picking a Rendering Mode
  • MDC explanation of Mozilla's DOCTYPE sniffing
  • Documentation for quirks mode in Mozilla-based browsers
  • Opera Software's explanation of quirks mode in their browser
  • What happens in Quirks Mode?
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.