Web specifications supported in Opera Presto 2.5

Last update: July 1, 2010

This document and its associated support tables apply to the Opera Presto 2.5 rendering engine. Opera products may or may not use various parts of the rendering engine's Web specification features. It is a living document collection and will be updated with the addition of any further Web specifications to the rendering engine. Previous Opera Web specification support document collections can be found at Web specifications supported in Opera [1].

For your convenience

Changes from Opera Presto 2.4

► Added support for

Geolocation services
HTML
  • Opera supports the HTML5 <audio> and <video> media elements with the following exceptions:
  • Support is added for the HTML5 <video> element DOM APIs to reflect changes in the specification.
  • <param> element support is added to control animations/scripts.
    • This HTML5 element is a child of the <object> element and allows the passing of parameters
    • Each <param> element has name/value pairs with the name and value attributes
    • These will be exposed to an embedded SVG document via script
SVG
  • Text search inside SVG
  • Animated raster images (APNG, GIF) in all the SVG elements that support raster graphics, i.e., <image>, <foreignObject>, and <feImage>

Opera 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 [5] and Editor's Draft [6] 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
CSS Properties
CSS3 Media Features/Queries
CSS3 Selectors
CSS3 2D Transforms
CSS3 Transitions

CSS Level 1

Opera supports all of CSS 1 [7].

CSS Level 2 Revision 1

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

  • Its compliance is measured against the latest version, but the final Recommendation may differ.
  • Opera supports all of the current CSS 2.1 module.

CSS Level 3

Note that these modules are at an early stage of development and may be changed or removed at any time.

CSS3 Backgrounds and Borders Module
  • See the W3C reference: CSS Backgrounds and Borders Module Level 3 [9].
  • Opera supports all of CSS3 Background and Borders with the following exceptions:
    • New properties are not exposed to the background shorthand format
    • Only the border-image shorthand format is supported for Border Images.
      • Individual properties border-image-source, border-image-slice, border-image-width, border-image-outset and border-image-repeat are ignored.
    • The box-decoration-break property
  • Multiple background images are now supported
CSS3 Basic Box Model Module
  • Opera has partial support for the CSS3 Basic Box Model Module:
    • All properties and values from CSS2.1
    • content is applicable on all elements, not just on the :before and :after pseudo-element; see section 12.2 [10]
    • box-sizing; see section 7.1 [11]
    • outline-offset; see section 8.5 [12]
    • overflow-x; see section 11.1 [13]
    • overflow-y; see section 11.1
    • nav-up, nav-right, nav-down, nav-left, nav-index; see section 10.2.2 [14] [54]
    • -o-background-size; see section 3.9 [15] (uses Opera vendor prefix)
    • -o-table-baseline (uses Opera vendor prefix)
  • See the CSS3 Basic Box Model Module [16]
CSS3 Basic User Interface Module
  • Opera offers partial support for the CSS3 Basic User Interface Module:
    • All properties and values from CSS2.1
    • All User Interface pseudo-classes selectors
    • The box-sizing property
    • The outline-offset property
    • The nav-index property
    • The nav-up, nav-right, nav-down and nav-left properties
  • See the CSS3 Basic User Interface Module [17].
CSS3 Color Module
CSS3 Fonts Module
  • Opera supports all of CSS3 fonts with the following exceptions:
    • the font-stretch property
    • the font-size-adjust property
    • the font-stretch descriptor
    • the unicode-range descriptor
  • Web Fonts:
    • Opera supports the following font formats for Web Fonts:
      • 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].
  • See the CSS3 Fonts Module [24]
CSS3 Media Queries Module
CSS Selectors Module
CSS Selectors API Module
CSS3 Text Module
CSS3 2D Transforms Module
CSS3 Transitions Module

CSS Mobile profile

Opera fully supports the CSS Mobile profile [34].

WAP CSS

WAP CSS [35] 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 [36] [61], 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 [37], with minor exceptions corresponding to HTML support exceptions.

DOM 2 Events

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

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

DOM 2 Style

Opera supports DOM 2 Style [40] 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 [41].

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) [42].

  • 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 [43], with some exceptions.

DOM 3 XPath

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

  • This DOM specification is currently a W3C note.

XMLHttpRequest (XHR)

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

  • Progress events have been temporarily removed.

window.btoa and window.atob

  • Opera supports window.btoa and window.atob for base64 encoding and decoding
  • See reference: window.btoa [46]
  • See reference: window.atob [47]

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.

ECMA-262 2 and 3

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

ECMA-262 5 (ECMAScript 5)

  • Opera partially supports ECMAScript 5
  • Native JSON support has been added

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.

Geolocation support

  • Opera Presto supports user-enabled geolocation services as stated in the W3C Geolocation API Specification [49].
    • A user decides to share or not share their device location with a Web site based on trust; see section 4.2 [50] of the W3C Geolocation specification.

Graphics support

Animation

OpenGL

Opera supports the OpenGL 2D/3D graphics API; see OpenGL API [53]

Direct3D

Opera supports the Direct3D device driver interface (DDI); see Direct3D [54]

<canvas> element

Support table
<canvas> element

Opera supports the <canvas> [55] [76] element specification, including canvas shadows, which is currently a work in progress.

Scalable Vector Graphics (SVG)

Support tables
SVG attributes
SVG CSS properties
SVG DOM interfaces
SVG elements
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 [56].
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.
Painting

Support has been added for the buffered-rendering property; see section 11.10.5 [57].

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
  • Font switching: Support has been added in the rendering/rasterizing of glyphs in mobile technologies; see Section 3.4 Types of graphics elements [58].
  • 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 [59].

Raster Graphics

Opera supports:

  • GIF
  • JPEG (partial support):
    • Supported:
      • Baseline
      • Extended
      • Progressive (SOF0, SOF1 and SOF2)
    • Not supported:
      • Lossless
      • Differential (hierarchical)
      • Arithmetic
  • BMP
  • ICO
  • WBMP
  • PNG [60] [77] including alpha channel (degrees of transparency) and gamma support (device independent colors)
  • APNG

HTML 4 and XHTML support

Support tables
DOCTYPE Switches
HTML, XHTML and WML

HTML 4.01

Opera supports HTML 4.01 [61] 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.

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 [62] [15] 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 [63] [16] 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 [64] [17] 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 [66] [19] (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 [67] [20].

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 2.0 with the following exceptions:

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

HTML5 support

Support table
HTML5 Elements, Attributes, and APIs
W3C References
W3C: Draft of the HTML5 Specification (multipage version) [68] [3]
W3C: Draft of the Web Developer’s Guide to HTML5 [69] [4]

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

  • Opera supports the HTML5 <audio> and <video> elements with the following exceptions:
  • HTML5 cross-document messaging is supported — see section 7.4 [70] [12]
  • HTML5 algorithms have been implemented for detecting charsets in HTML; see:
  • HTML5 parsing support has been added for:
  • HTML5 <canvas> element/API — see section 4.8.11 [5]
    • Opera now supports HTML5 <canvas> element shadow
  • HTML5 contenteditable attribute — see section 6.7 [73] [6]
  • HTML5 DOM designMode  attribute — see section 5.2.2 [74] [7]
  • HTML5 DOM innerHTML — see section 3.7.2 [75] [8]
  • HTML5 DOM getElementsByClassName — see section 2.4 [76] [9]
  • HTML5 embed element — see section 4.8.4 [77] [10]
  • HTML5 <table> element:
    • Aligned with the HTML5 default style sheet regarding vertical-align and text-indent in <table> elements and replaced content
    • Nested child table now resizes to 100% height of the parent table on a window dimension change

HTML5 Forms

Support table
HTML5 Forms

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

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 [79] [26] 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

HTTP 1.0 and HTTP 1.1 support

Opera supports HTTP 1.0 (RFC 1945) [80] and HTTP 1.1 (RFC 2616) [81] 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)
    • no-store (don't save to disk)
  • Multipart/mixed messages: RFC 2045 [82] and RFC 2046 [83]
  • Persistent connections (multiple request/response through one connection): RFC 2616 [84]
  • SSL [85], TLS (RFC 2246) [86] support (also through proxy/firewall)
  • HTTP over TLS: RFC 2818 [87]
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:

  • Secure Sockets Layer (SSL) version 3
  • 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.

Further support is provided for

  • Generating private keys and submitting certificate requests
  • 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.

  • 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 [101] [72].
  • Updated Unicode character data tables from Unicode v5.0.0 to v5.1.0.
  • Uniblocks table now supports ranges outside Unicode plane 0. This is needed to do proper font-switching of characters outside the Unicode plane 0.

Opera implements the following writing system related functionality improvements:

  • 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, Japanese, and Korean
  • CJK: improved line height and underlining in Chinese, Japanese, and Korean
  • KDDI emojis: improved support for KDDI emojis and special characters
  • Multistyle: improved default fonts for non-western Web pages

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 and UTF-8, 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 [102] [73], HTML [103] [74], and CSS [104] [75].

Web SQL Database support

Web storage in Opera can be configured using preferences in the "Web Storage" section in opera:config

  • Opera supports the ability to create databases:
    • Store data in a more structured manner
    • Query data using SQL
  • See: W3C Web SQL Database [105]

Web Storage support

Web storage in Opera can be configured using preferences in the "Web Storage" section in opera:config

  • Opera supports the following web storage tools:
    • Session storage: offers a temporary storage of data
    • Local storage: stores data for a longer period until you explicitly clear it
  • Opera does not currently support:
    • Structured storage
    • Storage mutex
  • See: W3C Web Storage [106]

Widgets support

Support tables
Opera Widget specification
W3C Widget Packaging and Configuration

Opera supports both the W3C Widget family of specifications and the legacy Opera Widgets format. The formats are different and not compatible. Opera Presto supports the proprietary Opera Widgets format for legacy reasons:

  • The Opera Widgets format predates the W3C's effort to standardize widgets.
  • Significant aspects of the W3C Widgets family of specifications are based on Opera Widgets.

Further information regarding Opera Presto support for the W3C Widgets family of specifications and the Opera proprietary Widgets format will be posted here as it is implemented.

Opera supports widget.preferences; see the W3C Widgets 1.0: APIs and Events [107].

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

Overview

Opera supports XML 1.0 [108] and XML 1.1 [109], and 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 [110] [21].
    • 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.

Binary XML, Binary WML (WBXML)

The Opera parser supports Binary XML; see XML Binary Characterization Working Group [111].

  • Its main use case is to handle Binary WML (WBXML); see WAP Binary XML Content Format [112]
  • WBXML is turned on by default for all profiles except minimal.

XForms

Opera does not offer support for XForms; see XForms [113], but extends support for the HTML5 Forms module as an alternative; see HTML5 Forms module [114].

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 [115] [22]. 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 [116] [23].

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

XML Events

Opera supports XML Events [118] [25] 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 4
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
W3C
World Wide Web Consortium
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.