Web specifications supported in Opera Presto 2.2

Last updated: October 19, 2009

This document and its associated support tables apply to Opera products using the Opera Presto 2.2 rendering engine. Previous Opera Web specification support documents can be found at Web specifications supported in Opera [1].

For your reference:

Support tables

ARIA support

Support table
ARIA support

Opera's participation

ARIA is a proposal/work in progress. Opera participates within this working group which will ultimately release the ARIA specification. Please see the ARIA Working Draft [2] and Editor's Draft [3] for details.

Opera supports the HTML implementation of ARIA according to the latest draft. Here is an example:

<div role="checkbox" aria-checked="true" tabindex="0"></div>

CSS support

Support tables
CSS At-rules
CSS3 Media Features/Queries
CSS Properties
CSS Selectors

Support has been added for the following items.

  • CE-HTML input-format support
  • Delayed commit of style sheets (CSS batching)
  • Improved support for CSS inspection in Opera Dragonfly
  • Media query is now allowed without media type, just a list of feature expresssions
  • Overriding width and height in SVG with CSS specified width and height

CSS Level 1

Opera supports all of CSS1 [4].

CSS Level 2 Revision 1

CSS 2.1 [5] is currently a W3C Candidate Recommendation.

  • Its compliance is measured against the latest version, but the final Recommendation may differ.
  • Opera supports CSS2.1 with the exception of:
    • the visibility: collapse property value — see section 11.2 [6]

CSS Level 3

CSS files must now be served with the correct MIME type ("text/css") in Strict mode, or they will be ignored.

Proposed properties supported by Opera

Note that these properties are at an early stage of development and may be changed or removed from the specifications at any time. Use them as experimental. Support has been added for the following items:

  • HSL color values: see section 4.2.4 [7]
  • Media Queries [8]: partial support
  • RGBA and HSLA opacity support is now included for an easier way to make Web page features transparent. This is accomplished by the addition of a fourth argument to HSL and RGB, namely alpha transparency and results in RGBA and HSLA values. See this Opera reference [9].
  • Selectors: see CSS3 Selectors [10]
  • Selectors API: see the W3C Selectors API [11].
  • box-sizing — see section 7.1 [12]
  • color:transparent value: support has been improved.
  • content is applicable on all elements, not just on the :before and :after pseudo-elements: see section 12.2 [13]
  • currentColor: see section 4.4 [14]
  • opacity: see section 3.2 [15]
  • outline-offset — see section 8.5 [16]
  • overflow-x — see section 11.1 [17]
  • overflow-y — see section 11.1
  • nav-up, nav-right, nav-down, nav-left, nav-index — see section 10.2.2 [18]
  • text-shadow, including multiple shadows — see text-shadows, multiple shadows [19]
  • -o-background-size see section 3.9 [20] (uses vendor prefix)
  • -o-table-baseline (proprietary to Opera)
  • -o-text-overflow see section 9.3 [21] (uses vendor prefix)
Web fonts support
  • font specification (@font-face CSS at-rules) with the font-family descriptor
  • src descriptor with local and remote
  • OpenType (OTF)
  • TrueType (TTF)
  • SVG fonts

See this Opera reference [22] and demonstration [23].

CSS Mobile profile

Opera fully supports the CSS Mobile profile [24].

WAP CSS

WAP CSS [25] is an extension of the CSS Mobile Profile. Opera fully supports WCSS versions 1.0 and 1.1.

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"?>

DOM support

Support tables
DOM 2 Core and XML modules
DOM 2 HTML Objects
DOM 2 UI, Mouse and Mutation Event modules
DOM 2 View, Style, CSS1 and CSS2 modules
XMLHttpRequest ('Ajax')

DOM 2 Core

Opera has full support for the Fundamental interfaces of DOM 2 Core [26] , with minor exceptions. Opera does not support the following Extended interfaces on purpose, expecting a future revision of DOM Core will remove them:

  • Notation
  • Entity
  • EntityReference

DOM 3 Core

Opera supports several carefully selected DOM 3 Core features. Several of these are:

  • compareDocumentPosition() method
  • textContent attribute

DOM 2 HTML

Opera has full support for DOM 2 HTML [27], with minor exceptions corresponding to HTML support exceptions.

DOM 2 Events

Opera has full support of DOM 2 Events [28] with no exceptions.

  • The work on DOM 3 Events [29] has restarted at the W3C.
  • We expect to have no exceptions when it becomes a recommendation.

DOM 2 Style

Opera supports DOM 2 Style [30] 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 the DOM 2 Range [31].

DOM 2 Traversal

Opera supports DOM 2 Traversal, with some exceptions.

DOM 3 Element Traversal specification (Working Draft)

Opera supports the Element Traversal specification (W3C Proposed Recommendation) [32].

  • The ElementTraversal interface allows script navigation of the elements of a DOM tree, excluding all other nodes in the DOM, such as text nodes.
  • It also provides an attribute to expose the number of child elements of an element.

DOM 3 Load and Save

Opera supports Load and Save [33], with some exceptions.

DOM 3 XPath

Opera supports DOM 3 XPath [34], with the same exceptions as with XSLT.

  • This DOM specification is currently a W3C note.

XMLHttpRequest (XHR)

XMLHttpRequest is a work in progress [35], and we expect to fully support it when it becomes a recommendation.

ECMAScript support

Support table
ECMAScript

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 following items.

  • XMLHttpRequests will trigger start loading/end loading events.
  • Scripts accessing plug-ins are blocked until the plug-in has loaded and displayed properly.
  • The Script load event is now sent after the script is executed rather than before it is executed.
  • The load event is now sent to <frame>/<iframe>/<object> elements before it is sent to the document.
  • Improvements have been made to the execution of JavaScript urls with non-ascii bytes in them.
  • A highlight will no longer be added when HTMLElement.focus() is called unless keyboard navigation is already activated.
  • Relative jumps with fragment identifiers on POST result pages have been improved.
  • Further support has been added for:
    • HttpURLConnection.setRequestMethod("PUT")
    • cache_archive_ex parameter to applets
    • URLconnection.setAllowUserInteraction
    • JSP_TYPE_EXPRESSION value type
    • exception throwing to jsplugins
    • polling functionality
    • static jsplugins
    • unload handlers
    • Block the setting of innerHTML while script is loading
    • Passing of native objects
    • Call functions on native objects
    • Placing set and get attributes on native objects
    • DOM property lookup failing if there is no thread to suspend
    • Making sure that direct execution for paint events is reset when the event has been handled

ECMA-262 2 and 3

Opera supports the entire ECMA-262 2nd and 3rd standards [36], with no exceptions. They are more or less aligned with JavaScript 1.3/1.5 Core.

ECMAScript 3.x and beyond

Opera is actively participating with ECMA TC39 in developing successors to the current spec. Opera will support future editions of the language as consensus is reached and the specifications become finalized.

Graphics support

<canvas> element

Support table
<canvas> element

Opera supports the <canvas> [37] element specification, which is currently a work in progress.

Scalable Vector Graphics (SVG)

Support tables
SVG attributes
SVG CSS properties
SVG DOM interfaces
SVG elements

Opera supports the following items.

  • altGlyph
  • opentype support for indic scripts
  • 32bit alpha in bmp and RLE encoded bmp files
  • Overriding width and height in SVG with CSS specified width and height
Events

There is support for listening to any event in the svg module. Some events are not sent by core, for example: activate.

  • SVG 1.1 doesn't specify a key-event set, and thus the attributes onkeyup, onkeydown and onkeypress don't register a corresponding event listener for those events.
  • In Opera it's possible to install listeners for key-events with DOM, for example: element.addEventListener('keydown', keyhandler-function, false).
  • If key-events are used it's vital to use evt.preventDefault() to prevent any key-event that should be handled only by the script from escaping upwards to the UI which may be listening for shortcut keys.
FPS
  • FPS (Frames Per Second) support: Opera enables you to manipulate the speed (frames per second) of your SVG animations using JavaScript by supporting the SVGElement.currentFps and SVGElement.targetFps properties. These properties respectively read and control SVG frames per second; see this Opera reference [38].
Integration

Opera supports the following SVG inclusion types.

  • In HTML: <object> element
  • In HTML: <iframe> element
  • In HTML: <embed> element
  • In HTML: <img> element
  • In CSS: background-image property
  • In CSS: list-style-image property
Interoperability

Some content may fail to render if sent with the wrong MIME-type, or if the namespace declarations are missing.

  • The correct MIME-type for svg is image/svg+xml.
  • The namespaces to open are svg: http://www.w3.org/2000/svg and xlink: http://www.w3.org/1999/xlink.
  • For CSS it should be noted that you must specify length values with units. For example:
    • font-size: 12; in CSS will mean the value is invalid, and thus it will be ignored.
    • This applies to all style elements, style attributes and external stylesheets.
    • The CSS content property can also embed SVG.
Printing

SVG is output as a bitmap image to the printer.

  • The output is not sent in vector format, thus the clarity of the image may be blurred.
SVG fonts
  • SVG fonts in HTML support: Use SVG font files to style your text using CSS (in both HTML and SVG files); see this Opera reference [39].

Raster Graphics

A new rasterizer core has been applied.

Opera fully supports:

  • GIF
  • JPEG
  • BMP
  • ICO
  • WBMP
  • PNG [40] including alpha channel (degrees of transparency) and gamma support (device independent colors)
  • APNG

HTML and XHTML support

Support tables
DOCTYPE Switches
HTML, XHTML and WML

HTML 4.01

Opera supports HTML 4.01 [41] with these exceptions:

  • Event attributes are not supported for the option element.
  • The col width attribute does not support multilengths.
  • The object standby and declare attributes are not supported.
  • The table cell attributes char and charoff are not supported.

Further support is provided for MIME types (in emails and mhtml):

  • application/vnd.wap.multipart.mixed (binary multipart)
  • application/ms-tnef
  • text/vnd.wap.wml
  • text/wml
  • application/vnd.wap.xhtml+xml
  • application/vnd.wap.multipart.related
  • application/vnd.wap.wbxml
  • application/vnd.wap.wmlc
  • image/vnd.wap.wbmp

HTML 5 (a draft in development)

W3C References
Draft of the HTML 5 Specification (multipage version) [42]
Draft of the Web Developer’s Guide to HTML 5 [43]
HTML 5 differences from HTML 4 [44]

Opera adds support for the next version of HTML: HTML 5. For your reference, the two preceding external hyperlinks are provided for HTML 5 drafts/works in progress by the W3C. Please note that changes to the draft specification and notes may be made at any time. HTML 5 is a work in progress and respectively, Opera considers its implementations for HTML 5 experimental until its specification has stabilized. Support is provided for the following:

  • Opera 10.00 scores 100/100, pixel perfect on the Acid3 compliance test; see our Opera reference [45].
  • <canvas> element/API — see section 4.8.11
    • HTML 5 <canvas> elements can now export images to the JPEG format; see the above W3C HTML 5 hyperlink
    • HTML 5 <canvas> transforms are applied when building a path, not when painting it; see W3C HTML 5 section 4.8.11.1.2 Transformations [46]
  • HTML 5 algorithms have been implemented for detecting charsets in HTML; see W3C HTML 5 section 2.8 Character encodings [47]
  • HTML 5 end-tag and start-tag parsing, whitespace parsing, and DOCTYPE parsing have been added; see W3C HTML 5 section 9.2 Parsing HTML documents [48]
  • contenteditable attribute — see section 6.7 [49]
  • designMode DOM attribute — see section 5.2.2 [50]
  • innerHTML — see section 3.7.2 [51]
  • getElementsByClassName — see section 2.4 [52]
  • embed element — see section 4.8.4 [53]
  • audio element/object — see section 4.8.8 [54]
  • Cross-document messaging — see section 7.4 [55]

HTML 5 Forms

Support table
HTML 5 Forms

Opera has experimental support for HTML 5 Forms [56] which is a work in progress. HTML 5 Forms replaces the separate Web Forms 2.0 specification which has been integrated into the HTML 5 specification.

XHTML 1.0 and XHTML Modularization

Opera does not have a XHTML content-type mode of text/html. XHTML written as text/html is handled just like HTML.

XHTML 1.1 support

Opera supports XHTML 1.1 [57] with these exceptions:

  • The col width attribute does not support multilengths.
  • The object standby and declare attributes are not supported.
  • The table cell attributes char and charoff are not supported.
  • Ruby annotations are not supported.

XHTML Basic

Opera supports XHTML Basic [58] with the following exceptions:

  • The object standby, declare attributes are not supported.
  • The inputmode attribute is supported, however
    • its implementation is platform-dependant
    • it is not enabled by default
    • it is not in the Opera 9.6 Desktop version

OMA XHTML Mobile Profile

Opera supports the XHTML Mobile Profile 1.0 and 1.1 [59] and extensions to XHTML Basic with no exceptions.

XHTML+Voice Profile (X+V)

With the IBM Voice component, Opera fully supports the XHTML+Voice profile 1.2 [61] (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 [62].

WML 1.3 and 2.0

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 WML 2.0 [63] with the following exceptions:

  • the columns attribute
  • the input formatting code <lang:class>
  • the wml:getvar element

MathML support

MathML for CSS profile

Support table
MathML for CSS profile elements/attributes

Opera supports the current working draft of the MathML for CSS profile [64] with the following exceptions:

  • Radicals and some fences do not inherit text color from document.
  • White space characters between token elements (mi, mn, mo, ms, mspace, mtext) are not discarded.
  • Class and style attributes are not supported.

Networking protocols support

Protocols

HTTP 1.0 and HTTP 1.1 support

Opera supports HTTP 1.0 (RFC 1945) [65] and HTTP 1.1 (RFC 2616) [66] protocols with the following exception:

  • Content-Location

Opera does support:

  • Basic Authentication (passwords)
    • Digest Authentication support, excepting integrity check on body
  • Byte range support which enables resuming downloads (provided the server supports it)
  • Cachecontrol for no-cache (always check for fresh document) and no-store (don't save to disk)
  • Multipart/mixed messages (RFC 2045 [67] and RFC 2046) [68]
  • Persistent connections (multiple request/response through one connection)
  • SSL [69], TLS (RFC 2246) [70] support (also through proxy/firewall)
  • HTTP over TLS (RFC 2818) [71]
Other protocol support
Proxy support for

Cookies

Opera provides support for the following items:

Encryption

Opera supports 128 and 256 bit encryption (RSA, DSA and DH key exchange methods) for the Secure Sockets Layer (SSL) version 3, and the successor Transport Layer Security (TLS) 1.0, 1.1, and 1.2.

  • This is supported for HTTP (web), NNTP (news), POP and SMTP (e-mail).
  • Note: SSL 2 is obsolete and no longer supported.
  • Support for generating private keys and submitting certificate requests.
  • Support for EV (Extended Validation).
    • An indicator (green bar) for EV certificates acts as an identifier in the Address bar.

News

A simple online newsreader with support for encrypted newsservers and newsserver with passwords is provided.

  • Supports decoding of single article attachments, MIME or unencoded.

Text and internationalization support

Unicode character set support in Opera

Opera can work with all the characters in the Unicode specification. RFC 1345 [85] specifies character mnemonics and character sets.

  • 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 [86] .

Opera 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

Support table
Legacy encodings in addition to Unicode

Although Opera works with the Unicode character set and its character encodings of UTF-16 (RFC 2781) [87] and UTF-8 (RFC 3629) [88], most text on the Internet is encoded in legacy encodings, for instance:

  • ISO 8859-1
  • Windows-1251
  • Shift_JIS (MIME name)
  • 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.

Support for bidirectional text

Opera supports bidirectional text as described in Unicode [89], HTML [90], and CSS [91].

Widgets support

Support table
Widget elements, attributes, and values

Widgets are Web applications that run on a desktop, mobile or other device. Opera supports Widgets [92]. The Opera Widgets specification was submitted to the W3C Widgets 1.0 [93] and is currently a W3C working draft. Further information regarding Opera's widgets implementation will be posted here as it develops.

New security model for widgets

network="public"

A new security model has been intoduced for Opera 10 (Opera Presto 2.2) which among other things means that widgets do not have network access on by default. In order to enable network access for non-intranet sites, add a network attribute to the widget element in the config.xml of your widget with the value "public". For example:

  <widget network="public">
    ...
  </widget>

This will make your widget work as intended in Opera 10, but will not affect previous versions. Older browsers will simply ignore the network attribute and give your widget access as per the existing security model.

network="private" and network="public private"

The widget element attributes network="private" and network="public private" can enable network access for either private networks, public networks, or both. For example:

  <widget network="private">
    ...
  </widget>
  <widget network="public private">
    ...
  </widget>

XML support

Opera can parse and display XML documents.

  • Support has been added for Canonical XML 1.0 when serializing XML.
  • Broken utf-8 sequences in XML are no longer supported.
  • 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 [94].
    • Opera follows the rules for application/xml.
    • We recommend using application/xml instead of text/xml, and the use of an explicit character set declaration such as charset=UTF-8.

XSLT, XPath and XSL-FO

Opera supports XSLT style sheets with the <?xml-stylesheet?> processing instruction; see Associating Style Sheets with XML documents Version 1.0 [95].

Opera supports XSLT 1.0 and XPath 1.0 with the following exceptions:

  • The namespace-alias element is not supported.
  • Opera does not support XSL-FO.

XML namespaces and XML ID

Opera fully supports XML namespaces [96].

  • Namespace support for text/html was discontinued with Opera 9, and is not supported.
  • Opera supports the xml:id attribute [97].

XML Events

Opera supports XML Events [98] and it is used in X+V.

  • HTML script and VoiceXML form can be handlers for XML Events.

Appendix A: Abbreviations and acronyms

Abbreviations and acronyms in this document in alphabetical order:
API
Application Programming Interface
APNG
Animated Portable Network Graphics
ARIA
Accessible Rich Internet Applications
BMP
Bitmap graphic filename extension
CSS
Cascading Style Sheets
DH
Diffie-Hellman (public key encryption algorithm)
DOM
Document Object Model
DSA
Digital Signature Algorithm
ECMA
European Computer Manufacturers Association
ECMAScript
European Computer Manufacturers Association Script
EUC-KR
Korean Character Encoding Standard
FTP
File Transfer Protocol
GIF
Graphic Interchange Format filename extension
HTML
Hypertext Markup Language
HTTP
Hypertext Transfer Protocol)
IBM
International Business Machines
ICO
Icon graphic filename extension
IDNA2003
Internationalized Domain Hostname
IMAP
Internet Message Access Protocol
IRC
Internet Relay Chat
ISO
International Organization for Standardization
JPEG
Joint Photographic Experts Group graphic filename extension
MIME
Multimedia Internet Message Extensions
MathML
Mathematical Markup Language
NNTP
Network News Transfer Protocol
OMA
Open Mobile Alliance
PNG
Portable Network Graphics
POP
Post Office Protocol
RSA
Rivest, Shamir and Adleman (public key encryption technology)
SMTP
Simple Mail Transfer Protocol
SSL
Secure Sockets Layer
SVG
Scalable Vector Graphics
Shift_JIS
Shift Japanese Industrial Standard (character encoding system)
TLS (RFC 2246)
Transport Layer Security
US-ASCII
United States of America Standard Code for Information Interchange
UTF
Unicode Transformation Format
VoiceXML
Voice eXtensible Markup Language
WAIS
Wide Area Information Server
WAP
Wireless Application Protocol
WBMP
Wireless Bitmap (WAP) graphic filename extension
WML
Wireless Markup Language
XHTML
eXtensible Hypertext Markup Language
XML
eXtensible Markup Language
XPath
XML Path Language
XSL-FO
eXtensible Style sheet Language Format Objects
XSLT
eXtensible Style sheet Language Transformation

Documentation

Opera Help

Need help? Hit F1 anytime while using Opera to access our online help files, or go here.