Web Specifications Supported in Opera 7
HTML and XHTML support | XHTML Mobile Profile support | WML support | XML support | CSS support | ECMAScript support | DOM support | JScript and Javascript support | Networking support | Text and internationalization Graphics support
Opera HTML and XHTML support
HTML 4.01
Opera version 7 supports HTML 4.01 with these exceptions:
- Event attributes are not supported for the
option
element - The table cell attributes
char
andcharoff
are not supported. - The bidirectional override element
bdo
and thedir
attribute. Thelang
attribute is not supported.
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
nd attributes. In "XML mode" Opera has the
following additional exception:
- The
script
element is not supported
XHTML 1.1 support
Opera version 7 supports XHTML 1.1 with these exceptions:
- Event attributes are not supported for the
option
element - The table cell attributes
char
andcharoff
are not supported. - The bidirectional override element
bdo
and thedir
attribute. Thelang
attribute is not supported. - The
script
element is not supported - Ruby annotations
XHTML Basic
Opera 7 supports XHTML Basic with no exceptions.
OMA XHTML Mobile Profile
Opera 7 supports the XHTML Mobile Profile extensions to XHTML Basic with no exceptions.
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.
Opera 7.0 supports WML 1.3 and 2.0 with the following exceptions:
- The localsrc attribute
- The columns attribute
- The input formatting code <lang:class>
- The wml:getvar element
XML support
Opera 7 can parse and display XML documents. Documents with Content-type "text/xml" or "application/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.
XSL and XSLT
Opera does not support XSL formatting objects, and neither does it natively support XSLT transformations. XML documents transformed server side will be parsed and displayed by Opera just like any other XML document. For an opinion on client side XSL-FO, see Formatting Objects Considered Harmful.
XML namespaces
Opera 7 fully supports XML namespaces. The most common use of namespaces is for XHTML processing. The XHTML namespace (http://www.w3.org/1999/xhtml) triggers XHTML handling in Opera.
CSS support
CSS Level 1
Opera 7 supports all of CSS1.
CSS Level 2
Opera 7 supports all of CSS2 with the exception of:
- These properties:
direction
,font-size-adjust
,font-stretch
,marker-offset
,marks
,text-shadow
, andunicode-bidi
. - The values added to
list-style-type
in CSS2. - 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 Working Draft, compliance is measured against the latest draft, but the final version may differ.
Opera 7 supports all of CSS2.1 with the exception of:
- The
direction
andunicode-bidi
properties. - The values added to
list-style-type
in CSS 2.0. - The :lang() selector
CSS Mobile profile
Opera 7 fully supports CSS Mobile profile.
WAP CSS
WAP CSS is an extension of CSS Mobile Profile. The following WCSS properties are not supported:
- -wap-accesskey
- -wap-input-format
- -wap-input-required
- -wap-marquee
- -wap-marquee-style
- -wap-marquee-loop
- -wap-marquee-dir
- -wap-marquee-speed
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.
- Experimental support for Media Queries
content
is applicable on all elements, not just on the :before and :after pseudo-elementsbox-sizing
Opera CSS linking extensions
Opera 7 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. |
Property: | -o-replace |
Values: | none | attr(x) |
Initial: | none |
Inherited: | no |
Description: | This property declares the element to be replaced or not. If replaced, the attr() function is used to point to the attribute where the URI to the content can be found. |
In addition Opera accepts a non-standard value for the CSS2
white-space
property, namely white-space: -o-pre-wrap
.
This value is exactly like white-space: pre
with the exception
that lines will wrap if wider than the containing box. This is particularily
handy for plain-text formats with unpredictable position of line break
characters, like e-mail messages. Unlike the other white-space settings
however, -o-pre-wrap
will display tab characters like small
boxes.
Some differences from Internet Explorer and Netscape
When using the Opera browser, you may notice that some pages are displayed differently than in other browsers. In most cases, the differences are caused by errors in the pages that are being displayed. Few Web pages are authored according to W3C's specifications which Opera supports. Opera 7 has two rendering modes, Standards Mode and Quirks Mode. For a full documentation on this, see separate document.
- The displayed color of an
hr
is set with thebackground-color
CSS property in Opera and Netscape 6+. In Netscape 4 and IE it is set with thecolor
property. Setting both properties to the desired color will give the same result in all browsers. This will not give the intended effect if content is added tohr
with thecontent
property, but Netscape 4 and IE don't support this anyway. - The default style sheet in IE and Netscape gives the
body
elementmargin: 8px
, Opera usespadding: 8px
. Padding is the margin between the body element and the content, while margin is the margin between the body and the html element (or the head element if visible). If eithermargin
orpadding
is explicitly set onbody
, the other property should be set too. - The CSS improvements in IE6 are already implemented in Opera. This means that IE6's display of Web pages in standards-compliant mode is much closer to Opera's Web page display. For further information, see the Microsoft documentation on IE6.
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 7 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 7 supports the entire ECMA-262 2ed and 3ed standard, with no exceptions. They are more or less aligned with JavaScript 1.3/1.5 Core.
DOM 2 support
DOM 2 Core
Opera 7 has full support for the Fundamental interfaces, apart from these exceptions:
DOM implementation
- createDocumentType()
- createDocument()
Document
- createCDATASection()
- createProcessingInstruction()
- createEntityReference()
- createElementNS()
- createAttributeNS()
- getElementsByTagNameNS()
Element
- getAttributeNS()
- setAttributeNS()
- removeAttributeNS()
- getAttributeNodeNS()
- setAttributeNodeNS()
- getElementsByTagNameNS()
- hasAttributeNS()
Opera 7 does not support these Extended interfaces:
- CDATA
- Notation
- Entity
- EntityReference
- ProcessingInstruction
DOM 1 HTML
Note: DOM 2 HTML isn't yet a W3C Recommendation. The current differences between level 1 and level 2 are relatively minor.
Opera 7 has full support for this module, apart from these objects:
HTMLHtmlElement
HTMLHeadElement
HTMLIsIndexElement
HTMLOptGroupElement
HTMLDirectoryElement
HTMLBaseFontElement
HTMLMenuElement
and these properties and methods:
HTMLDOMImplementation
- createHTMLDocument()
HTMLMetaElement
- scheme
HTMLOptionElement
- label
HTMLInputElement
- maxLength
HTMLImageElement
- lowSrc
- longDesc
HTMLObjectElement
- declare
HTMLScriptElement (partial support)
- text
- HTMLFor
- event
HTMLTableColElement, HTMLTableSectionElement, HTMLTableRowElement, HTMLTableCellElement
- ch
- chOff
HTMLTableCellElement
- abbr
DOM 2 Events
Opera 7 has full support of DOM 2 Events and UI Events interfaces, with no exceptions.
DOM 2 Style
Opera 7 has partial support of DOM 2 Style, consisting of support for these objects:
ElementCSSInlineStyle
CSSStyleDeclaration
Except for these properties and methods:
- CSSText
- parentRule
- getPropertyCSSValue()
- getPropertyPriority()
CSS2Properties
Except for these properties:
- captionSide
- counterIncrement
- direction
- fontSizeAdjust
- fontStretch
- markerOffset
- marks
- tableLayout
- textShadow
- unicodeBidi
- all Aural CSS properties
Support for non-standard JScript and JavaScript objects
In addition to ECMAScript and the DOM objects, Opera supports a number of non-standardized JavaScript/JScript objects.
Anchor
- name
- text
Button
- blur()
- click()
- focus()
CSSStyleDeclaration
- pixelBottom
- pixelHeight
- pixelLeft
- pixelRight
- pixelTop
- pixelWidth
- posBottom
- posHeight
- posLeft
- posRight
- posTop
- posWidth
document
- onClick
- onDblClick
- onKeyDown
- onKeyPress
- onKeyUp
- onMouseDown
- onMouseUp
- alinkColor
- all
- all()
- all.tags()
- bgColor
- embeds
- fgColor
- formName
- height
- ids
- lastModified
- plugins
- readyState
event
- cancelBubble
- data
- fromElement
- keyCode
- offsetX
- offsetY
- returnValue
- srcElement
- which
- x
- y
Form
- encoding
History
- back()
- current
- forward()
- go()
- length
- next
- previous
HTMLElement
- all
- clientHeight
- clientWidth
- innerHTML
- innerText
- insertAdjacentElement()
- insertAdjacentHTML()
- insertAdjacentText()
- offsetHeight
- offsetLeft
- offsetParent
- offsetTop
- offsetWidth
- outerHTML
- outerText
Image
- complete
java
JavaArray
- length
- toString()
JavaClass
JavaObject
JavaPackage
Location
- hash
- host
- hostname
- href
- pathname
- port
- protocol
- reload()
- replace()
- search
- toString()
- valueOf()
MimeType
- description
- enabledPlugin
- suffixes
- type
Navigator
- appCodeName
- appMinorVersion
- appName
- appVersion
- browserLanguage
- cookieEnabled
- javaEnabled()
- language
- mimeTypes
- platform
- plugins
- taintEnabled()
- userAgent
Netscape
Option
- length
Packages
- className
- java
- netscape
- sun
Plugin
- description
- filename
- length
- name
screen
- availHeight
- availWidth
- colorDepth
- height
- pixelDepth
- width
Style
- align
- borderWidths
- margins
- paddings
Sun
Window
- onBlur
- onLoad
- onUnload
- alert()
- back()
- blur()
- clearInterval()
- clearTimeout()
- close()
- closed
- confirm()
- defaultStatus
- disableExternalCapture()
- document
- enableExternalCapture()
- event
- focus()
- forward()
- frames
- history
- home()
- innerHeight
- innerWidth
- java
- length
- location
- moveBy()
- moveTo()
- name
- open()
- opener
- outerHeight
- outerWidth
- Packages
- pageXOffset
- pageYOffset
- parent
- print()
- prompt()
- releaseEvents()
- resizeBy()
- resizeTo()
- screenLeft
- screenTop
- screenX
- screenY
- scrollBy()
- scrollTo()
- self
- setInterval() (partial support)
- setTimeout() (partial support)
- status
- stop()
- top
- window
- window.<frame-name<
- window.<element-name<
- window.<element-id<
- Complete table of ECMAScript support (soon)
- Complete table of DOM 2 Core support (soon)
- Complete table of DOM 1 HTML support (soon)
- Complete table of DOM 2 Events support (soon)
- Complete table of DOM 2 Style support (soon)
- Complete table of non-standard JavaScript support (soon)
Networking protocols support
Opera 7 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. No current plans to support NTLM
- 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) v1.0. 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 ave 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 7.0 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 (UTF-16), most text on the Internet is encoded in legacy encodings, e.g. 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 |
Graphics support
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).