Web browser standards support

This document will summarize the level of support for web standards and maturing technologies in popular web browsers. It covers the Safari web browser, with focus on the HTML, CSS, DOM, and ECMAScript technologies.

Pick browsers to display

Table of Contents

  1. Quick links
  2. Accessibility features
  3. How to interpret these tables
  4. How features are rated
  5. Specification maturity levels
  6. Web standards and maturing technologies (summaries)
    1. HTML
    2. CSS
    3. DOM
    4. ECMAScript
    5. Summary
  7. About other browsers
  8. How to contribute
  9. Disclaimer

Accessibility features

Up

Visitors with visual impairments may take advantage of a magnified version or a monochrome version of these documents. In most web browsers, you can select your preferred view by going to the View menu and then Page Style or Style. This mechanism is not supported by Internet Explorer or Safari.

How to interpret these tables

Up

Each row corresponds to a feature of the particular web standard or maturing specification. In the full tables, the browser support for that feature is usually indicated by a single letter: Y (yes), N (no), or I (incomplete support). A question mark (?) means that the support for that feature is currently unknown. The values have been colored for readability. Most feature names in the full tables are links to the official standards definitions.

Some features are listed as a summary of another group of features on the tables. These summary features often show percentages indicating the mean average support for the features in that group. Incomplete (I) support for a feature is calculated as a 50% support. Features with unknown levels of support are ignored. Features that are irrelevant in the summarized context are also ignored, such as the “inherit” values in the individual components of CSS shorthand properties. If more than 5% of the data in the summarized group is unknown, it simply lists a question mark. If all of the summarized features have all or no support, the summary feature simply lists a Y or N, respectively. If there is only one feature summarized and it has an I rating, the summary feature simply lists an I.

Some summary features summarize a feature breakdown that is not written out on these tables but is obvious in the standard's specification, such as a predefined set of possible values for an attribute in HTML. These summary features assume a value for general support and an additional value for each part of the breakdown in order to arrive at the displayed percentage.

The tables on this page and the summary page are in summarized form. Each row is a summary feature of the corresponding group in the full tables. Feature names are links to the corresponding sections of the full tables.

Some feature ratings have explanations associated with them, particularly for those with an “I” rating. The explanations are stored in the title attribute of the table cell or in a mouseover event for user agents supporting ECMAScript, and can usually be accessed by user agents with mouse support by hovering the mouse cursor over the table cell. These rating symbols are marked with an overline.

There are three families of web browsers shown here by default: IE, Firefox, and Opera. IE values are relevant for Microsoft Internet Explorer for Windows, Maxthon, Netscape in “I Trust This Site” or Internet Explorer mode, Avant Browser, AOL Browser, and other programs that use the Trident layout engine. (It should be noted that Internet Explorer for the Macintosh uses a different layout engine.) Firefox values are relevant for corresponding versions of Mozilla Firefox, the Mozilla Application Suite, Seamonkey, Netscape in “I'm Not Sure” or Netscape mode, Camino, Flock, Galeon, Epiphany, and other programs that use the Gecko layout engine. Opera values are relevant for Opera, Dreamweaver on Mac OS X, Adobe Creative Suite 2, and other programs that use the Presto layout engine. For features that are specific to the interface of the browser rather than simply the layout engine, the named web browser is the browser being tested.

How features are rated

Up

If the browser doesn't recognize a given feature or admits that the feature is not yet implemented, and the browser is supposed to do something with the feature, it receives an automatic N. Features in description languages such as HTML that don't have a clear functional purpose are expected to contain information that is made directly available to the user. If the browser appears to support a given feature completely with no significantly impairing bugs, the feature receives a Y. In other cases, the feature generally receives an I, often with an explanation attached (see above). For consistency reasons, it will receive an I even if the feature never performs a correct task or always returns an incorrect value, as long as the browser shows that it recognizes the feature and attempts to utilize it.

A Y value can only be given if the feature is supported natively or by a plugin distributed as an official optional component of the web browser. If it requires a plugin not officially endorsed and distributed by the creators of the web browser, it can at best receive an I rating. If the feature requires a plugin, but there is no such plugin that is officially promoted by the creators of the browser, it receives an N. This is done because all major browsers have a variety of third party plugins available to extend the browser's standards support, and including them would defeat the purpose of judging the browser itself.

Features are generally tested with webpages using valid HTML or XHTML markup with strict doctypes, doctype URLs, and no XML declaration. Some browsers will purposefully implement some features incorrectly when there are perceived errors on the page, particularly when no doctype is used, or when certain types of doctypes are used. In order to see the following results, make sure that you are using valid markup and a doctype that triggers the closest mode to standards mode in the respective browser. You can check an HTML or XHTML document for validity by using the W3C HTML validator.

Specification maturity levels

Up

World Wide Web Consortium specifications are included in this resource once they have reached the Candidate Recommendation (CR) status for the first time. Some of the technologies detailed here, such as the changes in CSS 2.1 over CSS 2 and the included sections of CSS 3, are still at this stage or have been regressed from CR status. This means that these technologies are not yet technically considered web standards and it is incorrect for these new features to be used on webpages. The CR stage is when web browsers are expected to begin implementing support for the relevant features. After the specification is implemented by a predetermined number of user agents, it moves on to Proposed Recommendation status and eventually becomes a Recommendation. It isn't until a specification reaches this Recommendation stage that it is technically considered a web standard. For more information, see Advancing a Technical Report to Recommendation.

Features that have been marked as deprecated in the relevant specifications are not included in these tables.

Web standards and maturing technologies

Up

HTML

Up

HTML is the primary language that makes up a webpage. It puts together all of the text, images, scripts, and other content.

In most web browsers, you can view this page's HTML code by going to the View menu and selecting “Page Source” or “Source”.

This table is in summarized form. View the full tables

HTML / XHTML
Feature Safari 2
HTML 4.01
a ?
abbr ?
acronym ?
address ?
area ?
b ?
base ?
bdo ?
big ?
blockquote ?
body ?
br ?
button ?
caption ?
cite ?
code ?
col ?
colgroup ?
dd ?
del ?
dfn ?
div ?
dl ?
dt ?
em ?
fieldset ?
form ?
frame ?
frameset ?
h1 ?
h2 ?
h3 ?
h4 ?
h5 ?
h6 ?
head ?
hr ?
html ?
i ?
iframe ?
img ?
input ?
ins ?
kbd ?
label ?
legend ?
li ?
link ?
map ?
meta ?
noframes ?
noscript ?
object ?
ol ?
optgroup ?
option ?
p ?
param ?
pre ?
q ?
samp ?
script ?
select ?
small ?
span ?
strong ?
style ?
sub ?
sup ?
table ?
tbody ?
td ?
textarea ?
tfoot ?
th ?
thead ?
title ?
tr ?
tt ?
ul ?
var ?
Core attributes ?
Event attributes ?
Internationalization (i18n) attributes ?
Cell alignment attributes ?
SGML inheritance ?
XHTML 1.0 changes
HTML in XML ?
Documents must be well-formed ?
Media types ?
DTD changes ?
XHTML 1.1 changes
rb ?
rbc ?
rp ?
rt ?
rtc ?
ruby ?

CSS

Up

CSS is the primary language for adding presentation elements to a webpage. These presentation elements include colors, fonts, backgrounds, and layout.

View this page without CSS

This table is in summarized form. View the full tables

CSS 2.1
Feature Safari 2
CSS 2.1 Units
Color 99%
Counter N
Integer Y
Length Y
Number Y
Percentage Y
String Y
URI Y
CSS 2.1 Importance
!important Y
CSS 2.1 At-rules
@charset N
@import Y
@media Y
@page N
CSS 2.1 Basic selectors
* Y
E Y
E F Y
E > F Y
E + F Y
[attr] Y
[attr="value"] Y
[attr~="value"] Y
[attr|="value"] Y
.class Y
#id Y
CSS 2.1 Pseudo-classes
:active Y
:first-child I
:focus Y
:hover Y
:lang(C) N
:link Y
:visited Y
CSS 2.1 Pseudo-elements
:after Y
:before Y
:first-letter Y
:first-line Y
CSS 2.1 Basic properties
background 93%
background-attachment Y
background-color ≈100%
background-image Y
background-position 95%
background-repeat 67%
border ≈100%
border-bottom ≈100%
border-bottom-color ≈100%
border-bottom-style Y
border-bottom-width Y
border-collapse ?
border-color ≈100%
border-left ≈100%
border-left-color ≈100%
border-left-style Y
border-left-width Y
border-right ≈100%
border-right-color ≈100%
border-right-style Y
border-right-width Y
border-spacing ?
border-style Y
border-top ≈100%
border-top-color ≈100%
border-top-style Y
border-top-width Y
border-width Y
bottom ?
caption-side ?
clear ?
clip ?
color ?
content ?
counter-increment ?
counter-reset ?
cursor ?
direction ?
display ?
empty-cells ?
float ?
font ?
font-family ?
font-size ?
font-style ?
font-variant ?
font-weight ?
height ?
left ?
letter-spacing ?
line-height ?
list-style ?
list-style-image ?
list-style-position ?
list-style-type ?
margin ?
margin-bottom ?
margin-left ?
margin-right ?
margin-top ?
max-height ?
max-width ?
min-height ?
min-width ?
outline ?
outline-color ?
outline-style ?
outline-width ?
overflow ?
padding ?
padding-bottom ?
padding-left ?
padding-right ?
padding-top ?
position ?
quotes ?
right ?
table-layout ?
text-align ?
text-decoration ?
text-indent ?
text-transform ?
top ?
unicode-bidi ?
vertical-align ?
visibility ?
white-space ?
width ?
word-spacing ?
z-index ?
CSS 2.1 Print properties
orphans ?
page-break-after N
page-break-before N
page-break-inside N
widows ?
CSS 2.1 Conformance
Conformance 43%
CSS 3 changes
Feature Safari 2
CSS 3 Units
Appearance N
Color 97%
Counter N
ID ?
Target name ?
CSS 3 At-rules
@color-profile ?
@media ?
@page ?
CSS 3 Basic selectors
E ~ F N
[attr^="value"] Y
[attr$="value"] Y
[attr*="value"] Y
CSS 3 Pseudo-classes
:root Y
:nth-child(N) N
:nth-last-child(N) N
:nth-of-type(N) N
:nth-last-of-type(N) N
:last-child I
:first-of-type N
:last-of-type N
:only-child I
:only-of-type N
:empty I
:target Y
:enabled N
:disabled N
:checked N
:contains(C) N
:not(S) Y
:default N
:valid N
:invalid N
:in-range N
:out-of-range N
:required N
:optional N
:read-only N
:read-write N
CSS 3 Pseudo-elements
::selection I
::value N
::choices N
::repeat-item N
::repeat-index N
CSS 3 Basic properties
appearance ?
box-sizing ?
color ?
color-profile ?
content ?
cursor ?
display ?
font ?
icon ?
nav-down ?
nav-index ?
nav-left ?
nav-right ?
nav-up ?
opacity ?
outline-offset ?
rendering-intent ?
resize ?
ruby-align ?
ruby-overhang ?
ruby-position ?
ruby-span ?
CSS 3 Print properties
image-orientation ?
page ?
page-policy ?
size (@page) ?

DOM

Up

DOM is a model that allows scripting languages to handle browser input and output and manipulate information on webpages. This is essential for high-end web applications.

This table is in summarized form. View the full tables

DOM
Feature Safari 2
DOM Level 3 Core
Interface DOMStringList ?
Interface NameList ?
Interface DOMImplementationList ?
Interface DOMImplementationSource ?
Interface DOMImplementation ?
Interface DocumentFragment ?
Interface Document ?
Interface Node ?
Interface NodeList ?
Interface NamedNodeMap ?
Interface CharacterData ?
Interface Attr ?
Interface Element ?
Interface Text ?
Interface Comment ?
Interface TypeInfo ?
Interface UserDataHandler ?
Interface DOMError ?
Interface DOMErrorHandler ?
Interface DOMLocator ?
Interface DOMConfiguration ?
Interface CDATASection ?
Interface DocumentType ?
Interface Notation ?
Interface Entity ?
Interface EntityReference ?
Interface ProcessingInstruction ?
DOM Level 2 Events
Interface EventTarget ?
Interface EventListener ?
Interface Event ?
Interface DocumentEvent ?
Interface UIEvent ?
Interface MouseEvent ?
Interface MutationEvent ?
HTML event types ?
DOM Level 2 HTML
Interface HTMLCollection ?
Interface HTMLOptionsCollection ?
Interface HTMLDocument ?
Interface HTMLElement ?
Interface HTMLHtmlElement ?
Interface HTMLHeadElement ?
Interface HTMLLinkElement ?
Interface HTMLTitleElement ?
Interface HTMLMetaElement ?
Interface HTMLBaseElement ?
Interface HTMLIsIndexElement ?
Interface HTMLStyleElement ?
Interface HTMLBodyElement ?
Interface HTMLFormElement ?
Interface HTMLSelectElement ?
Interface HTMLOptGroupElement ?
Interface HTMLOptionElement ?
Interface HTMLInputElement ?
Interface HTMLTextAreaElement ?
Interface HTMLButtonElement ?
Interface HTMLLabelElement ?
Interface HTMLFieldSetElement ?
Interface HTMLLegendElement ?
Interface HTMLUListElement ?
Interface HTMLOListElement ?
Interface HTMLDListElement ?
Interface HTMLDirectoryElement ?
Interface HTMLMenuElement ?
Interface HTMLLIElement ?
Interface HTMLDivElement ?
Interface HTMLParagraphElement ?
Interface HTMLHeadingElement ?
Interface HTMLQuoteElement ?
Interface HTMLPreElement ?
Interface HTMLBRElement ?
Interface HTMLBaseFontElement ?
Interface HTMLFontElement ?
Interface HTMLHRElement ?
Interface HTMLModElement ?
Interface HTMLAnchorElement ?
Interface HTMLImageElement ?
Interface HTMLObjectElement ?
Interface HTMLParamElement ?
Interface HTMLAppletElement ?
Interface HTMLMapElement ?
Interface HTMLAreaElement ?
Interface HTMLScriptElement ?
Interface HTMLTableElement ?
Interface HTMLTableCaptionElement ?
Interface HTMLTableColElement ?
Interface HTMLTableSectionElement ?
Interface HTMLTableRowElement ?
Interface HTMLTableCellElement ?
Interface HTMLFrameSetElement ?
Interface HTMLFrameElement ?
Interface HTMLIFrameElement ?
DOM Level 3 Load and Save
Interface DOMImplementationLS ?
Interface LSParser ?
Interface LSInput ?
Interface LSResourceResolver ?
Interface LSParserFilter ?
Interface LSProgressEvent ?
Interface LSLoadEvent ?
Interface LSSerializer ?
Interface LSOutput ?
Interface LSSerializerFilter ?
DOM Level 2 Style
Interface StyleSheet ?
Interface StyleSheetList ?
Interface MediaList ?
Interface LinkStyle ?
Interface DocumentStyle ?
Interface CSSStyleSheet ?
Interface CSSRuleList ?
Interface CSSRule ?
Interface CSSStyleRule ?
Interface CSSMediaRule ?
Interface CSSFontFaceRule ?
Interface CSSPageRule ?
Interface CSSImportRule ?
Interface CSSCharsetRule ?
Interface CSSUnknownRule ?
Interface CSSStyleDeclaration ?
Interface CSSValue ?
Interface CSSPrimitiveValue ?
Interface CSSValueList ?
Interface RGBColor ?
Interface Rect ?
Interface Counter ?
Interface ViewCSS ?
Interface DocumentCSS ?
Interface DOMImplementationCSS ?
Interface ElementCSSInlineStyle ?
Interface CSS2Properties ?
DOM Level 2 Traversal and Range
Interface NodeIterator ?
Interface NodeFilter ?
Interface TreeWalker ?
Interface DocumentTraversal ?
Interface Range ?
Interface DocumentRange ?
DOM Level 3 Validation
Interface DocumentEditVAL ?
Interface NodeEditVAL ?
Interface ElementEditVAL ?
Interface CharacterDataEditVAL ?
DOM Level 2 Views
Interface AbstractView ?
Interface DocumentView ?

ECMAScript

Up

ECMAScript is a language used to access and work with the DOM. It was developed as a standardized base for JavaScript and JScript.

This table is in summarized form. View the full tables

ECMAScript
Feature Safari 2
Language constructs
Types ?
Basic expressions ?
Unary expressions ?
Math expressions ?
Relational expressions ?
Binary expressions ?
Assignment expressions ?
Statements ?
Objects
Global ?
Object ?
Function ?
Array ?
String ?
Boolean ?
Number ?
Math ?
Date ?
RegExp ?
Error ?

Summary

Up

A brief summary of the information on this page is available here: Summary

About other browsers

Up

I am currently in the process of testing other browsers and versions, including Safari and Konqueror. I do not yet have estimated dates for when this information will be available.

Other web browsers may be considered for future inclusion. If you would like to suggest a web browser or help collect data for any web browser not shown here, please post the relevant information in the discussion forum.

How to contribute

Up

You can quickly propose a change by clicking on a support value (such as Y, I, or N) in a full table (not these summary tables) and filling in the new values. You may also use the general purpose contact form, e-mail me at dhammond@webdevout.net, or post in the discussion forum. Contributions are highly appreciated.

Disclaimer

Up

Most of the above information comes from testing and research conducted by one person. It is possible that these tables contain errors. If you wish to correct an error or otherwise contribute to this information, please read the above section.