Web Specifications Supported in Opera 9
This page applies to the FreeBSD, Mac, Linux, Solaris, Symbian and Windows version 9. Opera 9 for Nintendo Wii is documented separately. For Opera version 8, see Specifications for Opera 8.
HTML and XHTML support | XHTML Mobile Profile support | XHTML+Voice support | WML support | XML support | CSS support | ECMAScript support | DOM support | Networking support | Text and internationalization | SVG and Graphics support
Opera HTML and XHTML support
HTML 4.01
Opera supports HTML 4.01 with these exceptions:
- Event attributes are not supported for the
optionelement - The
colwidthattribute does not support multilengths - The
objectstandbyanddeclareattributes are not supported. - The table cell attributes
charandcharoffare not supported.
Web Forms 2.0
Opera has experimental support for Web Forms 2.0. Web Forms 2.0 is a work in progress.
XHTML 1.0 and XHTML Modularization
There are two "modes" of XHTML support, one where
the document has the text/html content type and the other
where it has one of text/xml, application/xml
or application/xhtml+xml. In the first case the document
is handled as any other HTML document (giving de
facto support for XHTML 1.0, XHTML Basic and XHTML 1.1). In the second case
XHTML will be treated as XML with predetermined
functionality for HTML elements and attributes.
Opera supports both modes.
XHTML 1.1 support
Opera supports XHTML 1.1 with these exceptions:
- Event attributes are not supported for the
optionelement - The
colwidthattribute does not support multilengths - The
objectstandbyanddeclareattributes are not supported. - The table cell attributes
charandcharoffare not supported - Ruby annotations are not supported
XHTML Basic
Opera supports XHTML Basic with the following exception:
- The object
standbyanddeclareattributes are not supported.
OMA XHTML Mobile Profile
Opera supports the
XHTML
Mobile Profile 1.0 and 1.1 extensions to XHTML Basic with no exceptions. It supports 1.2 with the exception of the declare attribute of object.
XHTML+Voice (X+V) support
With the IBM Voice component Opera fully supports the XHTML+Voice profile 1.2 (and the Mobile Profile subset). The support of X+V includes support of CSS3 Speech (with an -xv- prefix as this module is under preparation). X+V needs to be served as an XML media type (application/xml, application/xhtml+xml, application/x-xhtml+voice+xml) for XML Events to take effect. For more information see the X+V developer documentation.
WML 1.3 and 2.0 support
Wireless Markup Language versions 1.0 to 1.3, while based on an HTML subset, must be considered a separate markup language for most practical purposes. WML 2.0 can better be considered an extension of XHTML Basic with WML 1.3 features.
Opera supports WML 1.3 and 2.0 with the following exceptions:
- The columns attribute
- The input formatting code <lang:class>
- the wml:getvar element
Widget support
Opera supports HTML Widgets. Widgets are Client Side Web Applications that run on the user's Desktop, Mobile or other device. The Opera Widgets specification was submitted to the W3C and Widgets 1.0 is currently a W3C working draft.
XML support
Opera can parse and display XML documents. Opera can be both a validating and non-validating processor.
Documents with Content-type "text/xml", "application/xml" or with a subtype ending on "+xml" will be treated as an XML document. If a Content-type is not available, the ".xml" file extension will also make the document be treated as XML. Opera does not use US-ASCII as the default character set for text/xml, but otherwise follows RFC3023. We recommend using application/xml instead of text/xml or use explicit character set declaration.
XSLT, XPath, and XSL-FO
Opera supports XSLT 1.0 and XPath 1.0 with the following exceptions:
- The namespace-alias element is not supported
- The Nan, per-mille, minus-sign, and percent attributes for the decimal-value element are not supported
- The case-order attribute for the sort element is not supported
- The document() function is not supported.
In addition the exsl:node-set() function is supported.
Opera does not support XSL Formatting Objects.
XML namespaces and XML ID
Opera fully supports XML namespaces.
Namespace support for text/html has been discontinued with Opera 9.
Opera supports the xml:id attribute.
XML Events
Opera supports XML Events and it is used in X+V. HTML script and VoiceXML form can be handlers for XML Events.
CSS support
CSS Level 1
Opera supports all of CSS1.
CSS Level 2
Opera supports all of CSS2 with the exception of:
- These properties:
font-size-adjust,font-stretch,marker-offset,marks, andtext-shadow, - The list style types cjk-ideographic, hebrew, hiragana, hiragana-iroha, katakana, katakana-iroha.
- These property/value combinations: "display: marker", "text-align: <string>", "visibility: collapse".
- Named pages (as described in section 13.3.2).
- The "@font-face" construct.
- The :lang() selector
CSS Level 2 Revision 1
CSS 2.1 is currently a W3C Candidate Recommendation, compliance is measured against the latest version, but the final Recommendation may differ.
Opera supports all of CSS2.1 with the exception of:
- The
visibility: collapseandwhite-space: pre-lineproperty values
CSS Mobile profile
Opera fully supports CSS Mobile profile.
WAP CSS
WAP CSS is an extension of CSS Mobile Profile. Opera fully supports WCSS versions 1.0 and 1.1.
Proposed CSS 3 properties supported by Opera
Note that these properties are at an early stage of development, they may be changed or removed from the specifications at any time. Use them as experimental.
- Partial support for Media Queries
contentis applicable on all elements, not just on the :before and :after pseudo-elementsbox-sizingopacity
Opera CSS linking extensions
Opera uses CSS-like properties to attach information to XML elements that cannot otherwise be represented. Three extension properties have been implemented to allow hyperlinks and images to be included in XML documents. Most often it's better for authors to use XHTML - rather than the properties described below - to represent document semantics, but they are described here for reference.
| Property: | -o-link |
|---|---|
| Values: | none | attr(<attribute-name>) |
| Initial: | none |
| Inherited: | no |
| Description: | This property sets the value of the "link" variable which can later be used to generate a link through the "-o-link-source" property. |
| Property: | -o-link-source |
| Values: | none | current | next |
| Initial: | none |
| Inherited: | no |
| Description: | This property sets the element to be a source anchor and, if so, declares which value of the '-o-link' variable that should be used: the current or the next. |
-o-replace is discontinued. It is expected to be replaced by an equivalent CSS3 mechanism.
XML and CSS
In order to display an XML document, a CSS style sheet should be present. Authors can attach style sheets to their XML documents through a processing instruction. Here is a simple example:
<?XML version="1.0"?> <?xml-stylesheet href="shakespeare.css" type="text/css"?>
If no style sheet is present and the page is not namespaced to HTML, Opera 9 will use the initial values on all CSS properties to display the document. All elements will be inline, and all text will be rendered in the same font.
ECMAScript support
ECMAScript is the standardized version of JavaScript Core. It is being standardized through the ECMA standards body. ECMAScript does not include browser and document related objects.
Opera supports the entire ECMA-262 2ed and 3ed standards, with no exceptions. They are more or less aligned with JavaScript 1.3/1.5 Core.
DOM support
- Complete table of DOM 2 Core support
- Complete table of DOM 2 HTML support
- Complete table of DOM 2 Events support
- Complete table of DOM 2 Style support
- Complete table of DOM 2 Range and Traversal support
- Complete table of DOM 3 Load and Save support
- Complete table of DOM 3 XPath support
- Complete table of XMLHTTPRequest support
- Complete table of Canvas support
- Complete table of DOM SVG support
DOM 2 Core
Opera has full support for the Fundamental interfaces of DOM 2 Core, with minor exceptions. Opera does not support these Extended interfaces: Notation, Entity, and EntityReference.
DOM 2 HTML
Opera has full support for DOM 2 HTML, with minor exceptions corresponding to HTML support exceptions.
DOM 2 Events
Opera 9 has full support of DOM 2 Events with no exceptions. The work on DOM 3 Events has restarted at the W3C, we expect to have no exceptions there when it becomes a recommendation.
DOM 2 Style
Opera supports DOM 2 Style with some exceptions. This module is under development in the W3C and we expect to fully support the updated version.
DOM 2 Range
Opera supports DOM 2 Range.
DOM 2 Traversal
Opera supports DOM 2 Traversal, with some exceptions.
DOM 3 Load and Save
Opera supports Load and Save, with some exceptions.
DOM 3 XPath
Opera supports DOM 3 XPath, with the same exceptions as with XSLT. This DOM specification is currently a W3C note.
XMLHTTPRequest (XHR)
XMLHTTPRequest is a work in progress, we expect to fully support it when it becomes a recommendation
Canvas
Opera has an experimental Canvas support. The Canvas specification is a work in progress.
Networking protocols support
Opera has full support for HTTP 1.0 and HTTP 1.1. Here are some highlights:
- Persistent connections (multiple request/response through one connection)
- Cachecontrol for no-cache (always check for fresh document) and no-store (don't save to disk)
- Basic Authentication (passwords). Supports Digest Authentication, excepting integrity check on body.
- Resume download, provided the server supports it
- SSL/TLS support (also through proxy/firewall)
- Proxy for HTTP, FTP, Gopher and WAIS
Encryption: 128 bit encryption (RSA key exchange only) for the Secure Sockets Layer (SSL) versions 2 and 3, and the successor Transport Layer Security (TLS) 1.0 and 1.1. SSL 2 is obsolete and not supported by default. This is supported for HTTP (web), NNTP (news), POP and SMTP (e-mail). Support for generating private keys and submitting certificate requests.
News: simple online newsreader with support for encrypted newsservers and newsserver with passwords. Can decode single article attachments, MIME or uuencoded.
FTP including resume download is supported.
It is possible to download to file for both FTP and HTTP.
Text and internationalization
Unicode support in Opera
Opera can work with all the characters in the Unicode specification. All text communicated to Opera from the network is converted into Unicode.
In order for Opera to render Unicode characters, the needed glyphs have to be available in the fonts on your system. This might be a problem for older Windows systems. For information on available fonts, see Unicode fonts for Windows computers.
Opera 9 implements the following writing system related functionality:
- font-switching
- Needed in order to display characters that the current font does not include.
- line-breaking
- Needed in order to break scripts written without spaces, such as Chinese, Korean, and Japanese.
Opera relies on the operating system to perform:
- character shaping
- Contextual glyph selection, ligature forming, character stacking, combining character support etc.
Legacy encoding support
Although Opera works with Unicode encodings (UTF-16 and UTF-8), most text on the Internet is encoded in legacy encodings, for instance ISO 8859-1, Windows-1251, Shift-JIS, EUC-KR. Opera handles this by detecting the character encoding used, and converting it to UTF-16. The user has three options for how to handle these pages.
- Auto-detect
- In this mode Opera will attempt to detect the encoding used by the page. If the transport protocol provides an encoding name, that is used. If not, Opera will look at the page for a charset declaration. If this is missing, Opera will attempt to auto-detect the encoding, using the domain name to see if the script is a CJK script, and if so which one. Opera can also auto-detect UTF-8.
- Writing script auto-detect
- In this mode the user can tell that this is a Japanese or Chinese page, but that the encoding is unknown. Opera will then analyze the text in the page to determine which encoding is used.
- Encoding override
- In this mode the user selects an encoding. This encoding will be used by Opera, regardless of what the page and transport protocol claims is the encoding for the page.
This table shows all the legacy encodings Opera supports in addition to Unicode:
| Encoding | Category | Comments |
|---|---|---|
| ISO 8859-1 | Latin | |
| ISO 8859-2 | Latin | Used in Eastern Europe |
| ISO 8859-3 | Latin | Rare |
| ISO 8859-4 | Latin | Sami and Baltic country |
| ISO 8859-9 | Latin | Turkish |
| ISO 8859-10 | Latin | Inuit, Sami, and Icelandic |
| ISO 8859-13 | Latin | Rare |
| ISO 8859-14 | Latin | Celtic |
| ISO 8859-15 | Latin | Intended to supersede 8859-1 |
| Windows-1250 | Latin | Used in Eastern Europe |
| Windows-1252 | Latin | |
| Windows-1254 | Latin | Turkish |
| Windows-1257 | Latin | Baltic |
| Windows-1258 | Latin | Vietnamese |
| VISCII | Latin | Vietnamese |
| IBM 866 | Cyrillic | |
| ISO 8859-5 | Cyrillic | |
| koi8-r | Cyrillic | |
| koi8-u | Cyrillic | Ukrainian version of koi8-r |
| Windows-1251 | Cyrillic | |
| ISO 8859-6 | Arabic | |
| Windows-1256 | Arabic | |
| ISO 8859-7 | Greek | |
| Windows-1253 | Greek | |
| ISO 8859-8 | Hebrew | |
| Windows-1255 | Hebrew | |
| ISO 8859-11 | Thai | Also known as TIS-620 |
| Windows-874 | Thai | Extension of ISO 8859-11 |
| utf-8 | Unicode | |
| utf-16 | Unicode | |
| Shift-JIS | Japanese | |
| ISO-2022-JP | Japanese | |
| EUC-JP | Japanese | |
| Big 5 | Chinese | |
| EUC-CN | Chinese | Also erroneously known as GB 2312 |
| HZ-GB-2312 | Chinese | Primarily used in e-mail |
| EUC-TW | Chinese | |
| GBK | Chinese | EUC-CN extension |
| EUC-KR | Korean |
Support for bidirectional text
Opera supports bidirectional text as described in Unicode, HTML, and CSS.
Graphics support
Scalable Vector Graphics (SVG)
Opera supports a superset of SVG 1.1 Basic and SVG 1.1 Tiny with some exceptions. This maps to a partial support of SVG 1.1.
Event listening to any event is supported, but some events are not sent by the application, for example focusin, focusout and activate. The Adobe-specific events keyup and keydown are not supported. Fonts are supported, including font-family, but if there is a missing glyph in the selected font a platform-defined fallback will be used instead of picking that glyph from the next font in line in the font-family property.
SVG can be used in object, embed, and iframe in HTML and as stand-alone documents. It is not supported for img elements or in CSS property values (e.g. background-image). An SVG image element can contain any supported raster graphics, but not another SVG image. References to external resources are not supported.
SVG images are printed as bitmap images.
SVG is processed as XML and the same rules for well-formedness and namespaces apply. Opera also follows the SVG conformance rules that requires processing to stop if any unknown feature is encountered.
Performance
These features are particularly processor expensive and should be used with care when targetting machines with slower processors: filters, transparency layers (group opacity), and masks.
Raster Graphics
Opera fully supports GIF89a, JPEG, BMP, ICO, WBMP, and has full support for PNG including alpha channel (degrees of transparency) and gamma support (device independent colors).


